启动特定子进程后挂起进程
Posted
技术标签:
【中文标题】启动特定子进程后挂起进程【英文标题】:Suspend process after a specific child process is started 【发布时间】:2012-06-04 13:49:50 【问题描述】:我有一个 loader.exe,它使用 CreateProcess(..) 启动进程 A 一段时间后,进程 A 启动另一个进程 B。
当 B 将由进程 A 启动时,我想暂停进程 A 和进程 B。 我怎么能等到B?我想收到通知,还是必须在流程完成之前进行轮询?
在运行时我知道进程 B 的名称,并且我知道 B 将由进程 A 启动。
谢谢
【问题讨论】:
你对进程A中的代码有控制权吗? 我无法控制进程A和进程B中的代码,我只是写了loader.exe。 您需要在 B 启动后立即暂停 A 和 B(即在 B 初始化之前)还是可以延迟一秒左右? 【参考方案1】:使用Boost Interprocess library。您特别感兴趣的是互斥体、条件和信号量。
【讨论】:
抱歉,我想避免使用 3rd 方库。 请注意,Boost.Interprocess 是一个只有头文件的库——没有二进制文件。只需在编译器包含路径中包含您的 Boost 头目录即可。顺便说一句,这也意味着您可以简单地复制他们的代码(或从他们的实现中学习)。【参考方案2】:如果你不热衷于使用 Boost,可以考虑 win32 互斥锁。有关如何使用它的更多信息,请参阅此线程。 Mutex explanation
基本上,您可以从进程 B 创建具有给定名称的互斥锁,然后等待来自 A/Loader 的相同互斥锁。
【讨论】:
以上是关于启动特定子进程后挂起进程的主要内容,如果未能解决你的问题,请参考以下文章