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

标签 c++ linux exec

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

我的程序使用打开文件句柄的静态链接库,因此,我无法在这些文件句柄上设置 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/

相关文章:

c++ - OpenCV 画圆圈跟踪球问题

linux - Ubuntu 17.10 登录卡住

linux - pgplot 不起作用

c - Exec(cd 和 ls)和 Fork 调用 C

c - 如何通过调用 exec 函数族的成员来获取程序运行的返回值?

c++ - 在编译时使用 Constexpr 填充数组

c++ - 这个c++函数怎么能返回任何东西?

c++ - Eigen 库中具有步幅的子矩阵

linux - 如何在不指定完整路径的情况下运行程序?

java - 使用 execv 时 Cygwin C 文件返回 "Bad Address"