我已经编写了一个bash脚本来启动系统中的一些进程。它只是调用相应的进程和配置文件,与从命令行调用的方式相同。
#!/bin/bash
# Start specified process in a new session
setsid $1 &>/dev/null &
要启动someprocess
,我需要在命令行中调用:
root@supercomputer:~# start someprocess
这非常有效,每次都能成功。但当我从另一个正在运行的C++进程中进行
system
调用时,someprocess
就无法启动了。system( "start someprocess" )
这个方案适用于我90%的流程,除了一个。工作和不工作的唯一区别在于不工作的那个使用了专有库。我最近在bash脚本中添加了
setsid
选项,希望启动新会话可以有所帮助,但没有任何改变。我也尝试了popen
和execv
,但仍然没有变化。所以我的问题是,使用
system()
调用与从命令行直接调用有什么区别?所有进程都在Linux上用C++编写。
~/.bashrc
中设置了环境变量以供此程序使用,我该如何确保/检查在使用system()
启动程序时它们被设置?我认为调用一个bash脚本意味着引入了bashrc
。 - zachd1_618