我正在使用共享内存实现管道。我应该只写和触摸图书馆,而不是main()
.
我遇到了一个问题:
可以说这是main()
一些使用我的图书馆的用户shared_memory_pipe.h
:
#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()
已经制作了a?
我怎么知道有另一个进程对我的共享内存管道有读/写端,所以我会知道关闭/不关闭我的共享内存管道?
我听说过一个命令,他知道有一个fork()
或类似的东西,但我没有找到它,我不知道它。
提前谢谢!请询问您是否需要更多信息。