本文主要是介绍Pipe Capacity(管道容量),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
结论:管道容量是 65536 字节
验证如下:
/** Since Linux 2.6.11, the pipe capacity is 65536 bytes. from man 7 pipe* Linux test28 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux*/
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>int main(void)
{int fds[2], flags, count = 0;if(0 != pipe(fds)){perror("pipe error");exit(EXIT_FAILURE);}flags = fcntl(fds[1],F_GETFL);/** 写端 fds[1] 默认是阻塞模式,现改为非阻塞*/fcntl(fds[1], F_SETFL, flags | O_NONBLOCK);while (1){if (-1 == write(fds[1], "A", 1)){perror("write error");break;}count++;}printf("the pipe capcity is %d\n", count);return 0;
}
/** write error: Resource temporarily unavailable* the pipe capcity is 65536*/
这篇关于Pipe Capacity(管道容量)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!