我已经构建了一个 bash 脚本来启动我系统中的一些进程。它只是调用进程和相关的配置文件。就像我从命令行调用一样。
#!/bin/bash
# Start specified process in a new session
setsid $1 &>/dev/null &
所以要启动someprocess
,我会从命令行调用:
root@supercomputer:~# start someprocess
这就像一个魅力。每一个过程,每一次。但是当我system
从另一个正在运行的 C++ 进程中调用时,它someprocess
永远不会启动。
system( "start someprocess" )
这种方法适用于我 90% 的流程,除了一个。工作流程和非工作流程的唯一区别是非工作流程使用了下面的专有库。我最近setsid
在 bash 脚本中添加了该选项,希望开始一个新会话会有所帮助,但这并没有什么不同。我也试过popen
,和execv
。没变。
system()
所以我的问题是用命令行调用和从命令行调用相同的调用有什么区别?
Linux 上的所有进程都是用 C++ 编写的。