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