不要回答!不要回答!不要回答!
管道
管道命令
在linux下创建pipe命令为|
,可以进行进程间通信,它是进程间的一个单向数据流,一个写入一个读取。
1 | ls | more |
第一个进程的标准输出被重定向到管道中;第二个进程从这个管道中读取输入。管道可以看作一个打开的文件。
管道工作过程
系统调用
pipe
pipe的头文件和函数原型如下:
1 |
|
输入为一个文件描述符数组,大小为2,保存两个文件描述符:
- filedes[0]:管道读取端,一般为3
- filedes[1]:管道写入端,一般为4
所以linux下的管道实际上是半双工的。如果创建管道失败,返回-1
,否则返回0
。
管道的一些属性
大小
管道的大小不同的机器可能不同,下面是一个测试的脚本:
1 | !/bin/bash |
输入测试命令:
1 | /bin/bash -c 'for p in {0..18}; do ts.sh $((2 ** $p)) 0.5; done' |
在我这里是65536个byte。
参考文献
- 1. ↩