我正在寻找不同的方法来通过Windows XP下的进程ID以编程方式暂停和恢复特定进程.
进程挂起/恢复工具使用SuspendThread
/ 执行它,ResumeThread
但警告多线程程序和死锁问题.
PsSuspend看起来没问题,但我想知道它是否对死锁做了什么特别的事情或使用其他方法?
首选语言:C++/Python
如果您"调试调试器"(例如,使用logger.exe
跟踪所做的所有API调用windbg.exe
),则调试器似乎使用SuspendThread()
/ ResumeThread()
挂起正在调试的进程中的所有线程.
PsSuspend可能使用不同的方式暂停进程(我不确定),但仍然可以挂起其他进程:如果您暂停的进程持有另一个进程需要的共享同步对象,则可能会阻塞其他过程取得任何进展.如果两个程序都写得很好,那么当你恢复暂停的程序时它们应该恢复,但并非所有程序都写得很好.如果这导致正在执行挂起的程序挂起,那么就会出现死锁.