我的关于C的应用于Linux的书说,如果一个进程创建了一个fork()
的子进程,那么它们之间创建的管道就遵循这个原则:
重要的是要注意父进程和子进程最初都关闭它们未使用的管道端
如果两个进程都以管道端关闭开始,那么他们如何知道对方何时可以自由通信?也许,进程之间是否存在中间缓冲区?
答案 0 :(得分:2)
计算机上的管道非常像现实生活中的管道。有两个目的,你把一些东西放在一端,它从另一端出来。
通常在程序中使用管道时,通常只需要输入端,编写数据的位置,或者想要读取数据的输出端。如果父进程只想写入子进程,并且子进程只从父进程读取,那么父进程可以在fork
之后关闭读取结束,并且子进程可以关闭写进程
答案 1 :(得分:0)
Pipe是内核提供的进程间通信机制。在管道上写入的过程不必担心是否有其他过程来读取它。通信是异步的。内核负责传输中的数据。