关于pipe的2个问题

软件和网站开发以及相关技术探讨
回复
qw4990
帖子: 10
注册时间: 2014-03-01 21:51
系统: ubuntu 13.10
送出感谢: 3 次
接收感谢: 0

关于pipe的2个问题

#1

帖子 qw4990 » 2014-04-25 22:35

最近学到pipe,遇到几个问题,求助一下! :em01

1:pipe的缓冲区问题
比如我现在建立了进程A到进程B的管道,当A向管道里面写入数据,但B却没接受的时候,数据是留在管道里的吧,
那这里就存在一个管道的缓冲区了, 关于这个缓冲区,是内核自己分配的么? 是在内存中还是在磁盘中啊?
还有就是这个缓冲区可以无限制的大么,对用户可见么,还是被内核隐藏了?

2:当关闭管道的读取段后,再对管道写入段进行写入操作时,程序就会中止。
int pd[2];
pipe(pd);
close(pd[0]);
write(pd[1], "test", 4);
printf("end");
在上面这个程序中, 运行结果中并没有 end 的输出, 程序在write中止了, 这个是内核对管道的保护机制么?
头像
astolia
论坛版主
帖子: 4602
注册时间: 2008-09-18 13:11
送出感谢: 1 次
接收感谢: 771 次

Re: 关于pipe的2个问题

#2

帖子 astolia » 2014-05-05 15:21

如果你学习的资料里连这些都没说清楚,建议你换一份

看这两篇就可以解答你的问题了
http://blog.ddup.us/?p=285
http://www.ibm.com/developerworks/cn/linux/l-ipc/part1/
回复

回到 “软件/网站开发”