【发布时间】:2021-03-22 22:30:41
【问题描述】:
有没有办法使用 C++ 暂停和恢复进程?今天,我创建了一个迷你 shell,它将停止一些后台进程以执行一个新的前台进程。 谢谢,
【问题讨论】:
-
不是标准C++,你必须使用系统库。
标签: c++ multithreading powershell shell process
有没有办法使用 C++ 暂停和恢复进程?今天,我创建了一个迷你 shell,它将停止一些后台进程以执行一个新的前台进程。 谢谢,
【问题讨论】:
标签: c++ multithreading powershell shell process
没有。 C++ 语言完全不知道进程的概念,因此也不知道子进程的概念,因此没有任何函数1 可以直接与进程交互。
1 除了继承自 C 标准库的std::system,它以实现定义的方式将字符串传递给主机系统的命令处理器,实际上通常由创建子进程。
【讨论】:
你在标签中说的是 Powershell,所以我假设是 Windows。
如果你有一个进程的句柄,那么你可以对那个进程做一些事情。您可以做的事情的列表记录在 MSDN 中。在这种情况下,您需要获取进程中各个线程的句柄,以便暂停线程:https://docs.microsoft.com/en-us/windows/win32/procthread/suspending-thread-execution
在 POSIX 中执行此操作要容易一些。您只需向目标进程发送一个 SIGSTOP 信号。然后它及其所有线程将停止运行,直到您发送 SIGCONT。
【讨论】: