【发布时间】:2012-10-17 23:52:58
【问题描述】:
在 Linux/C++ 库中,我通过 system() 调用启动一个进程,
system("nohup processName > /dev/null&");
这似乎适用于一个自行退出的简单测试应用程序,但如果我从一个收到终止信号的 Nodejs/V8 扩展内部使用它,子进程就会被终止。我确实发现它正在运行,
system("sudo nohup processName > /dev/null&");
将 sudoers 文件设置为不需要密码,即使在父进程(节点)退出时也可以运行。有没有办法完全分离子进程,以便发送给父进程和父进程退出的信号不再对子进程产生影响?最好在 system() 调用中,而不是需要获取进程 ID 并对其执行某些操作。
【问题讨论】:
-
也许是值得信赖的双分叉执行器?
-
为此使用
sudo似乎是一个非常糟糕的主意 -
是的,这并不是一个解决方案,我只是将其记录为观察。虽然我想到了使用 sudo 将用户切换到已经运行该进程的同一用户。
-
避免使用
system(3)启动这样的进程。你应该使用fork(2)&execve(2)或者daemon(3)。阅读advancedlinuxprogramming.com
标签: c++ c linux node.js process