C++启动程序与现有应用程序分开
C++ Launch Program Separate From Existing Application
如何启动与应用程序完全断开连接的程序? 换句话说,如何创建另一个父进程,而不是子进程?
Windows 上的进程关系非常弱。 没有SIGCHLD
. 没有必要从终端分离来避免SIGHUP
死亡。 实际上,父进程只有在一堆环境内容可以自动复制到子进程时才重要。
您可能希望了解如何在新流程组中启动流程,或附加到新的作业对象。 请参阅CREATE_NEW_PROCESS_GROUP
标志。
一种选择是调用 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()
的调用之前,您可能需要查看有关它的文章。有些人认为使用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;
}
看看_spawnv和_exec。
如果你在Windows上,请使用CreateProcess。
相关文章:
- QSerialPort 在应用程序启动之前正在使用中
- C++ - 从 MFC 应用程序启动记事本,并将其默认标题从 "Untitled - Notepad" 更改为其他内容
- 在应用程序启动时停靠 QDockWidget?
- 在应用程序启动时读取文件
- osX - 如何从我的 QT 应用程序启动另一个程序
- 如何跟踪 C++14 中的控制台应用程序启动的次数?
- 调试从 Linux 中的另一个C++应用程序启动的 python 脚本
- 添加新对话框后,MFC 应用程序启动失败并"DLL Initialization Failed"
- 在应用程序启动之前做某事
- 基于CDialog的应用程序启动时,如何将我的辅助对话框窗口带到顶部
- 在Qt和C++中从另一个应用程序启动一个应用软件会产生问题
- 在 C++/STL/MFC 应用程序启动早期发生的致命异常中,是否可以信任堆栈回溯符号名称?
- 从控制台应用程序启动窗口应用程序
- 如何从另一个C++控制台应用程序启动/结束C++控制台应用程序
- 从 MFC(c++) 应用程序启动的可执行 jar 中获取返回值
- 从 MFC 应用程序启动 Java 时,在 MFC 应用程序中显示等待光标,直到它完成其进程
- 从控制台应用程序启动控制台应用程序
- Windows应用程序启动我的控制台
- 从应用程序启动 Linux 服务时避免套接字继承C++
- 如何在应用程序启动后隐藏其命令提示符