-->

如何暂停/恢复在Windows下的任何外部进程?(How to pause / resume any

2019-06-23 10:25发布

我要寻找不同的方式来暂停,并通过在Windows XP下它的进程ID程序继续特定的过程。

流程挂起/恢复工具做它用SuspendThread / ResumeThread但警告有关多线程程序和死锁问题。

PsSuspend看起来不错,但我不知道它做什么特别的死锁或使用另一种方法?

首选语言:C ++ / Python的

Answer 1:

如果“调试调试器”(例如,使用logger.exe以跟踪的所有API呼叫windbg.exe ),看来调试器使用SuspendThread() / ResumeThread()暂停所有的线程在这个过程之中调试。

PsSuspend可以使用挂起进程以不同的方式(我不知道),但它仍然有可能挂其它进程:如果你暂停正在举行由另一个进程所需要的共享同步对象的过程中,你可能会阻止从取得任何进展,其他过程。 如果这两个程序都写得很好,他们应该当您恢复您暂停了一个恢复,但并不是所有的程序都写得很好。 如果这会导致你的程序是做悬浮挂,那么你有一个僵局。



Answer 2:

我不知道如果这样做的工作,但与MS Systernals ProcessExplorer您可以暂停的过程。

它已经在这里说: https://superuser.com/a/155263 ,我发现它有太多。



Answer 3:

阅读在这里 ,你也有蟒蛇,你可以使用它像psutil:

>>> import psutil
>>> pid = 7012
>>> p = psutil.Process(pid)
>>> p.suspend()
>>> p.resume()


Answer 4:

我测试http://www.codeproject.com/KB/threads/pausep.aspx上一些软件:

它工作正常。

PsSuspend和Pausep是两个有效的选项。



Answer 5:

我觉得这是一个很好的理由有Windows无SuspendProcess()函数。 具有这样的功能,打开了一个不稳定的系统门。 除非你自己创建的过程中,你不得中止的过程。 如果你自己写的过程中,你可以使用一个事件(见:: SetEvent的()等在MSDN)或另一种消息传递的过程中触发暂停命令。



文章来源: How to pause / resume any external process under Windows?