网站怎么做描文本西安软件开发公司排行
2026/1/16 10:45:00 网站建设 项目流程
网站怎么做描文本,西安软件开发公司排行,用腾讯云做购物网站视频,比较知名的企业我们耳熟能详的操作系统#xff1a;Linux、Windows以及一些数通设备#xff08;Huawei交换机等#xff09;都是支持管道符#xff08;|#xff09;的。那么管道是如何工作的呢#xff1f;跟我们“自认为”、“应如是”是否有出入呢#xff1f;结合AI给的解释#xff0c…我们耳熟能详的操作系统Linux、Windows以及一些数通设备Huawei交换机等都是支持管道符|的。那么管道是如何工作的呢跟我们“自认为”、“应如是”是否有出入呢结合AI给的解释我们配合实验操作来看一下看到最后会打破你固有认知哦。管道工作流程分解以下是cmd1 | cmd2 | cmd3的完整执行流程步骤操作关键点1. 解析与准备Shell识别管道符号|创建无名管道和进程组管道本质上是内核提供的一段缓冲区通常4KB2. 进程创建Shell为每个命令创建子进程fork所有子进程同时启动形成管道链3. 文件描述符重定向Shell设置每个进程的标准流•cmd1stdout → 管道写端•cmd2stdin ← 管道读端stdout → 新管道写端•cmd3stdin ← 管道读端stdout → 终端关键每个命令不知道自己在管道中像正常程序一样读写4. 并发执行所有命令并行运行不是顺序执行cmd2在cmd1产生输出前就会启动并等待输入5. 数据传输数据流经管道缓冲区像水流过水管如果读者慢写者会阻塞如果读者快会等待数据6. 进程终止命令按自己的节奏结束退出状态各自独立生成互不影响7. 状态收集Shell收集所有子进程的退出状态默认只取最后一个(cmd3)的状态作为管道状态针对如上的讲解基本上都好理解。只有一点管道串联的命令启动和运行不是顺序的而是并行的。这个怎么验证一下子呢使用如下命令#!/bin/bash echo 实验1时间戳验证并行执行 # 生产者每秒产生一个时间戳 # 消费者立即处理并打上自己的时间戳 ( echo 生产者启动: $(date %T.%N) for i in {1..5}; do echo 数据$i$(date %T.%N) sleep 1 done echo 生产者结束: $(date %T.%N) ) | ( echo 消费者启动: $(date %T.%N) while read line; do echo 消费者处理 [$(date %T.%N)]: $line # 消费者处理速度快没有延迟 done echo 消费者结束: $(date %T.%N) )按照我们的固有理解“生产者”肯定要最早运行然后生产完所有数据传递给“消费者”消费者消费“生成数据”。但是这是错误的哦。下面是shell脚本运行回显消费者启动: 11:53:59.614424713消费者处理 [11:53:59.615773820]: 生产者启动: 11:53:59.614495023消费者处理 [11:53:59.617394235]: 数据111:53:59.615758632消费者处理 [11:54:00.620142390]: 数据211:54:00.618415176消费者处理 [11:54:01.622494366]: 数据311:54:01.621038623消费者处理 [11:54:02.625012448]: 数据411:54:02.623514739消费者处理 [11:54:03.627571099]: 数据511:54:03.626168602消费者处理 [11:54:04.630431399]: 生产者结束: 11:54:04.628782660消费者结束: 11:54:04.631653786可见消费者启动时间要比生产者启动要早此后每隔1s生产一条数据消费者就会消费1条数据而不是等所有数据都生产完。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询