如何启动与我的应用程序完全无关的程序?换句话说,如何创建另一个父进程,而不是子进程?
答案 0 :(得分:1)
一种选择是调用system()
命令。这可以在<cstdlib>
(又名<stdlib.h>
)中找到。
示例:
#include <stdlib.h>
int main(int argc, char *argv[]){
// Open the Window's Calculator:
system("C:/Windows/system32/calc.exe");
return 0;
}
您可以传递任何您想要的system()
参数命令(假设您具有执行命令所需的权限)。
这也适用于Linux / Unix系统。
system()
的调用之前, 修改,您可能需要查看this write-up。有些人认为使用system()
是不安全/不好的做法。但是,对于推出一个不相关的程序,我个人认为system()
是一个很好的解决方案。
在使用您的命令调用它之前,确保system()
可用是一件好事。在某些系统上,可能不允许您生成shell /命令提示符。要检查这一点,您可以执行以下操作:
if( system(NULL) ){
// spawning a shell is allowed
system( commandToExecute );
return 0;
}else{
// spawning a shell is prohibited
return ERROR_NO_SHELL;
}
答案 1 :(得分:1)
Windows上的进程关系非常弱。没有SIGCHLD
。为了避免SIGHUP
死亡,没有必要从终端分离。实际上,父进程才是重要的,因为一堆环境内容可以自动复制到孩子身上。
您可能希望查看在新进程组中启动进程,或者将其附加到新作业对象。请参阅CREATE_NEW_PROCESS_GROUP
标志。
答案 2 :(得分:0)
如果你在Windows上使用CreateProcess。