How to pause / resume any external process under Windows?
If you "debug the debugger" (for instance, using logger.exe
to trace all API calls made by windbg.exe
), it appears that the debugger uses SuspendThread()
/ResumeThread()
to suspend all of the threads in the process being debugged.
PsSuspend may use a different way of suspending processes (I'm not sure), but it is still possible to hang other processes: if the process you're suspending is holding a shared synchronization object that is needed by another process, you may block that other process from making any progress. If both programs are well-written, they should recover when you resume the one that you suspended, but not all programs are well-written. And if this causes your program that is doing the suspending to hang, then you have a deadlock.
I'm not sure if this does the job, but with ProcessExplorer from MS Systernals you can suspend a process.
It's been said here: https://superuser.com/a/155263 and I found it there too.
read here and you also have psutil for python that you can use it like that:
>>> import psutil>>> pid = 7012>>> p = psutil.Process(pid)>>> p.suspend()>>> p.resume()