我正在使用共享内存实现管道。 我应该只写和触摸库,而不是main()
。使用共享内存实现管道
我遇到一个问题:
比方说这是谁用我的图书馆shared_memory_pipe.h
一些用户的main()
:
#include "shared_memory_pipe.h"
int main() {
int fd[2];
shared_memory_pipe(fd);
if (fork()) {
while(1) {}
}
shared_memory_close(fd[0]);
shared_memory_close(fd[1]);
}
在这个例子中我们可以看到,孩子将关闭这两个他FD的,但父亲陷入无限循环,永远不会关闭他的fd。在这种情况下,我的管道应该仍然存在(与所有写入fd都关闭的情况相比,或者所有读取fd都关闭,或者全部关闭,所以管道应该死亡)。
正如我之前所说,我只写了库(shared_memory_pipe.h
)。 那么,在图书馆里,我怎么知道fork()
已经被制作了?
我怎么知道还有另一个进程对我的共享内存管道有读/写结束,所以我知道要关闭/不关闭我的共享内存管道?
我听说有人知道有一个fork()
或类似的命令,但我没有找到它,我不知道它。
谢谢! 请询问您是否需要更多信息。
我不明白, 我不写'main()',我不能那样做。如果我在图书馆那样做,那么在某些情况下,孩子可能永远不会使用图书馆的任何功能,所以我永远无法知道他的pid – hudac