
1:pipe的缓冲区问题
比如我现在建立了进程A到进程B的管道,当A向管道里面写入数据,但B却没接受的时候,数据是留在管道里的吧,
那这里就存在一个管道的缓冲区了, 关于这个缓冲区,是内核自己分配的么? 是在内存中还是在磁盘中啊?
还有就是这个缓冲区可以无限制的大么,对用户可见么,还是被内核隐藏了?
2:当关闭管道的读取段后,再对管道写入段进行写入操作时,程序就会中止。
int pd[2];
pipe(pd);
close(pd[0]);
write(pd[1], "test", 4);
printf("end");
在上面这个程序中, 运行结果中并没有 end 的输出, 程序在write中止了, 这个是内核对管道的保护机制么?