我正在使用共享內存實現管道。 我應該只寫和觸摸庫,而不是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