这个问题在这里被多次询问过,但我找不到以下情况的答案:
我的程序使用静态链接库,打开文件句柄,因此,我无法在这些文件句柄上设置FD_CLOEXEC
简单地调用exec会导致新进程中出现很多错误,因为文件句柄不可用
基本上我需要:
1.产生新的过程而不阻塞当前的一个
2.终止当前进程(关闭所有句柄)
我可以在linux上做吗?
答案 0 :(得分:2)
关闭所有文件描述符应该像
一样简单#include <unistd.h>
for (i=getdtablesize();i>=0;--i)
close(i); /* close all descriptors */
这也是守护进程中的标准步骤,例如http://www.enderunix.org/docs/eng/daemon.php