在Linux中使用管道
首先,学过Linux命令的话,大家对于管道肯定不陌生, Linux管道使用竖线 | 连接多个命令,这个被称为管道符。...编码实现父子进程通信管道
管道的实现思路如下:
创建管道
创建子进程, 子进程关闭读端, 然后开始向管道写入数据
父进程关闭写端,然后开始向管道读数据
读取完毕,父子进程关闭自己所使用的写...read)是会调用阻塞,暂停进程执行,直到有数据来为止:
当读写端正常但写入时管道还是满的时
O_NONBLOCK disable: write调用阻塞,直到有进程读走数据
O_NONBLOCK..., 而且这些消息是连续的, 并没有断层, 这说明当管道中数据满了的时候, 写入端(write)是会调用阻塞,暂停进程执行,直到所有数据被读取走后才会继续写入:
验证代码如下:
#include...查询pipe的手册,我们可以知道在不同的内核版本下,管道的大小也不相同:
再使用程序验证时,我们会发现子进程会给父进程写入65536个字节的数据,即64KB数据,这说明我们当前环境下管道的大小是