我有一個大程序。它非常喜歡打開文件(與他們合作,數量可能巨大 - 超過10k)。在某個時候,我想要誕生一個能夠過上自己生活的子過程(在過程之外的網絡瀏覽器)。由於其大小(> 10GB代碼)和第三方(插件以及)依賴關係,我不控制在我的主程序中創建文件的人員和方式。我想要:如何枚舉文件描述符? (叉後關閉它們)
- O_CLOEXEC/FD_CLOEXEC默認情況下。我懷疑沒有這種能力。或者
- 一種枚舉所有文件(套接字,管道等)描述符的方法,以便能夠在fork之後關閉它們。感興趣的操作系統:Mac OS X和Linux。
「我不控制在我的主程序中創建文件的人和方式」。你能更清楚地解釋一下嗎? – Sanketh
時間只是蹩腳的代碼,像網絡和磁盤的幾個領域。大型圖書館,其中一些是第三方。這就是說,如果我在某個庫的幫助下打開一個文件,我不控制如何在其中打開文件,因此無法設置FD_CLOEXEC標誌。 –
讓你的程序維護一個你想做的**的小列表,並且關閉所有的fds,除了這個列表中的列表。 – wildplasser