C ++启动程序与现有应用程序分开

时间:2015-01-21 01:14:05

标签: c++

如何启动与我的应用程序完全无关的程序?换句话说,如何创建另一个父进程,而不是子进程?

3 个答案:

答案 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)

查看_spawnv_exec

如果你在Windows上使用CreateProcess