2011-10-12 80 views
0

這個問題已經被問在這裏好幾次,但我找不到以下情況的答案:c + +啓動新的進程,並終止在linux下當前的

我的程序使用靜態鏈接庫,打開的文件句柄,所以,我無法設置FD_CLOEXEC這些文件句柄

簡單地調用exec導致很多新過程中的錯誤,因爲無法文件句柄

基本上我需要:
1.產生新的不處理阻止當前的一個
2.終止當前進程(關閉所有句柄)

我可以在linux上執行嗎?

+0

爲什麼你無法設置這些句柄?當你要執行時,爲什麼不爲每個文件句柄設置它?或關閉每個文件句柄? – PlasmaHH

回答

2

關閉所有filedescriptors應儘可能簡單

#include <unistd.h> 

for (i=getdtablesize();i>=0;--i) 
    close(i); /* close all descriptors */ 

這也是daemonizing期間一個標準步驟,例如見http://www.enderunix.org/docs/eng/daemon.php

相關問題