Windows C++ 启动子进程并绑定子进程,主进程结束关闭后自动结束关闭子进程

简介: 在Windows平台上主进程启动子进程,并使主进程结束关闭后自动结束关闭子进程


// 启动子进程STARTUPINFOStartupInfo;
PROCESS_INFORMATIONProcessInformation;
ZeroMemory(&StartupInfo, sizeof(StartupInfo));
ZeroMemory(&ProcessInformation, sizeof(ProcessInformation));
StartupInfo.cb=sizeof(StartupInfo);
StartupInfo.wShowWindow=SW_SHOW;
CreateProcess(L"child.exe", nullptr, nullptr, nullptr, 0, 0, nullptr, nullptr, &StartupInfo, &ProcessInformation);
// 把子进程加入到作业中HANDLEHandleJob=CreateJobObject(nullptr, nullptr);
if(AssignProcessToJobObject(HandleJob, ProcessInformation.hProcess))
    {
JOBOBJECT_EXTENDED_LIMIT_INFORMATIONLimitInfo;
ZeroMemory(&LimitInfo, sizeof(LimitInfo));
LimitInfo.BasicLimitInformation.LimitFlags=JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE; 
SetInformationJobObject(HandleJob, JobObjectExtendedLimitInformation, &LimitInfo, sizeof(LimitInfo));   
    }


最后调用 CloseHandle(HandleJob); 就可以关闭子进程。

但是我们需要的是主进程退出以后,子进程才自动关闭, 所以不需要调用 CloseHandle(HandleJob);. 在主程序关闭以后,HandleJob 会被自动回收,子进程也跟着一起关闭了。


80后程序员

相关文章
|
存储 安全 算法
【C++智能指针 相关应用】深入探索C++智能指针:跨进程、动态库与最佳实践
【C++智能指针 相关应用】深入探索C++智能指针:跨进程、动态库与最佳实践
66 5
|
1月前
|
Linux C语言 C++
C/C++进程超详细详解【下部分】(系统性学习day8)
C/C++进程超详细详解【下部分】(系统性学习day8)
|
24天前
|
人工智能 机器人 编译器
【C++】Windows端VS code中运行CMake工程(手把手教学)
【C++】Windows端VS code中运行CMake工程(手把手教学)
|
1月前
|
消息中间件 Linux API
C/C++ 进程间通信system V IPC对象超详细讲解(系统性学习day9)
C/C++ 进程间通信system V IPC对象超详细讲解(系统性学习day9)
|
19天前
|
人工智能 机器人 C++
【C++/Python】Windows用Swig实现C++调用Python(史上最简单详细,80岁看了都会操作)
【C++/Python】Windows用Swig实现C++调用Python(史上最简单详细,80岁看了都会操作)
|
1月前
|
消息中间件 Linux 调度
【Linux 进程/线程状态 】深入理解Linux C++中的进程/线程状态:阻塞,休眠,僵死
【Linux 进程/线程状态 】深入理解Linux C++中的进程/线程状态:阻塞,休眠,僵死
67 0
|
1月前
|
安全 Linux 开发者
⭐⭐⭐⭐⭐Linux C/C++ 进程崩溃诊断以及有效数据收集:解锁代码问题快速定位与修复的方法
⭐⭐⭐⭐⭐Linux C/C++ 进程崩溃诊断以及有效数据收集:解锁代码问题快速定位与修复的方法
83 1
|
3天前
|
算法 Linux Shell
【linux进程(二)】如何创建子进程?--fork函数深度剖析
【linux进程(二)】如何创建子进程?--fork函数深度剖析
|
1月前
|
存储 Linux 程序员
【Linux C/C++ 堆内存分布】深入理解Linux进程的堆空间管理
【Linux C/C++ 堆内存分布】深入理解Linux进程的堆空间管理
76 0
|
1月前
|
监控 C++
C++ Qt开发:QProcess进程管理模块
Qt是一个跨平台的C++图形库,简化了窗体应用开发,支持通过拖放组件提升效率。本章节关注`QProcess`组件,它用于控制和管理进程,例如执行命令、运行可执行文件及与外部进程通信。`QProcess`提供多种方法如`start`、`waitForStarted`和`waitForFinished`等,实现启动、监控和交互。示例展示了如何使用`QProcess`获取系统进程和信息,通过`tasklist`和`systeminfo`命令,并将结果展示在`QTreeWidget`中。
29 0
C++ Qt开发:QProcess进程管理模块