我需要自己实现一个管道,它将具有类似于
我的想法是在
如何知道
更新:
实际上,它是要与文件描述符一起使用的,而进程不管理此内存,它们只能访问它。我需要一种方法来防止一个进程在所有其他进程关闭之前关闭其管道的一端,并确保一旦所有端点都关闭,内存就会被释放。
pipe()
、read()
、write()
和 close()
的常规管道函数。该管道用作父子进程之间的通信通道,这意味着程序将使用 fork()
,可能不止一次。我的想法是在
pipe()
函数中使用 malloc 实现,然后在 close()
函数中释放。但是,当 fork 命令发生时,我会得到多个进程持有我的管道文件描述符的情况,这是我无法解决的部分:如何知道
fork()
已经被调用了多少次,有多少进程可以访问我的管道?如何防止关闭其管道一端的进程关闭所有其他进程的管道一端?如何确保关闭管道的最后一个进程会释放内存?更新:
实际上,它是要与文件描述符一起使用的,而进程不管理此内存,它们只能访问它。我需要一种方法来防止一个进程在所有其他进程关闭之前关闭其管道的一端,并确保一旦所有端点都关闭,内存就会被释放。