C ++启动新进程并在linux下终止当前的进程

时间:2011-10-12 09:36:55

标签: c++ linux exec

这个问题在这里被多次询问过,但我找不到以下情况的答案:

我的程序使用静态链接库,打开文件句柄,因此,我无法在这些文件句柄上设置FD_CLOEXEC

简单地调用exec会导致新进程中出现很多错误,因为文件句柄不可用

基本上我需要:
1.产生新的过程而不阻塞当前的一个 2.终止当前进程(关闭所有句柄)

我可以在linux上做吗?

1 个答案:

答案 0 :(得分:2)

关闭所有文件描述符应该像

一样简单
#include <unistd.h>

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

这也是守护进程中的标准步骤,例如http://www.enderunix.org/docs/eng/daemon.php