當調用fork()
時,是否有可能在子進程中將特定文件描述符標記爲不可繼承或關閉它?Linux:如何將文件描述符標記爲不可在fork上繼承?
1
A
回答
8
不是。所有文件描述符都在fork中繼承。你可以設置一個fd在exec上關閉,但是,通過使用fcntl(fd, F_SETFD, FD_CLOEXEC)
。
+3
另外請注意,您可以通過將'O_CLOEXEC'傳遞給'open'來保存'fcntl' Linux操作系統。 – Damon
+1
@Damon:或者任何符合POSIX標準的系統('O_CLOEXEC'標準化爲POSIX 2008)。 –
0
沒有它不可能。默認情況下子進程具有從父進程繼承文件表。
0
如果你真的想近距離上叉,像這樣可以工作:
static void fd_to_close;
static void closer()
{
close(fd_to_close);
}
pthread_atfork(0, 0, closer);
常閉-ON-EXEC是所期望的行爲,無論如何,雖然。
相關問題
- 1. 沒有孩子的PHP fork會繼承父級的文件描述符?
- 2. 相同的文件描述符後fork()
- 3. Linux open()文件描述符
- 4. 如何在linux上創建自定義文件描述符
- 5. 項目描述符繼承了「CONTACTINFO」
- 6. Fork上的叉子,Ruby,ActiveRecord和文件描述符
- 7. 防止子進程繼承文件描述符
- 8. 多重繼承如何在描述符中工作?
- 9. 任何人都可以在fork()之後解釋有關'文件描述符'的簡單描述嗎?
- 10. Linux文件描述符日誌
- 11. Linux文件描述符表和vmalloc
- 12. Linux Socket文件描述符與線程
- 13. 將描述頁面屬性輸出爲元描述標記
- 14. 找不到標記庫描述符
- 15. 等待可讀文件描述符和可寫文件描述符
- 16. 在Linux上從C中打印PID文件描述符
- 17. 如何通過Linux shell命令關閉文件描述符
- 18. Linux文件描述符限制如何工作?
- 19. Linux系統:檢查是否文件描述符可以讀取
- 20. 文件描述符飢餓和阻斷文件描述符
- 21. 如何將多個文件描述符合併爲一個?
- 22. Linux上雙重C描述符
- 23. linux上的文件描述符3有什麼特別之處?
- 24. 64位Linux上文件描述符的範圍是什麼?
- 25. 繪製描述UML圖與繼承
- 26. Linux描述符類型
- 27. Linux套接字描述符
- 28. 如何在順序圖中描述繼承?
- 29. 如何使一個文件描述符
- 30. 文件描述符如何工作?
重複的:http://stackoverflow.com/questions/5713242/linux-fork-prevent-file-descriptors-inheritance – Akronix