2011-10-12 93 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

相关问题