我要寻找不同的方式来暂停,并通过在Windows XP下它的进程ID程序继续特定的过程。
流程挂起/恢复工具做它用SuspendThread
/ ResumeThread
但警告有关多线程程序和死锁问题。
PsSuspend看起来不错,但我不知道它做什么特别的死锁或使用另一种方法?
首选语言:C ++ / Python的
我要寻找不同的方式来暂停,并通过在Windows XP下它的进程ID程序继续特定的过程。
流程挂起/恢复工具做它用SuspendThread
/ ResumeThread
但警告有关多线程程序和死锁问题。
PsSuspend看起来不错,但我不知道它做什么特别的死锁或使用另一种方法?
首选语言:C ++ / Python的
如果“调试调试器”(例如,使用logger.exe
以跟踪的所有API呼叫windbg.exe
),看来调试器使用SuspendThread()
/ ResumeThread()
暂停所有的线程在这个过程之中调试。
PsSuspend可以使用挂起进程以不同的方式(我不知道),但它仍然有可能挂其它进程:如果你暂停正在举行由另一个进程所需要的共享同步对象的过程中,你可能会阻止从取得任何进展,其他过程。 如果这两个程序都写得很好,他们应该当您恢复您暂停了一个恢复,但并不是所有的程序都写得很好。 如果这会导致你的程序是做悬浮挂,那么你有一个僵局。
我不知道如果这样做的工作,但与MS Systernals ProcessExplorer您可以暂停的过程。
它已经在这里说: https://superuser.com/a/155263 ,我发现它有太多。
阅读在这里 ,你也有蟒蛇,你可以使用它像psutil:
>>> import psutil
>>> pid = 7012
>>> p = psutil.Process(pid)
>>> p.suspend()
>>> p.resume()
我测试http://www.codeproject.com/KB/threads/pausep.aspx上一些软件:
它工作正常。
PsSuspend和Pausep是两个有效的选项。
我觉得这是一个很好的理由有Windows无SuspendProcess()函数。 具有这样的功能,打开了一个不稳定的系统门。 除非你自己创建的过程中,你不得中止的过程。 如果你自己写的过程中,你可以使用一个事件(见:: SetEvent的()等在MSDN)或另一种消息传递的过程中触发暂停命令。