我有一个程序需要暂停和恢复另一个程序。为此,我使用 kill 函数,或者从代码中使用:-
kill(pid, SIGSTOP); // to pause
kill(pid, SIGCONT); // to resume
或者使用类似的命令行
kill -STOP <pid>
kill -CONT <pid>
我可以使用 this code 跟踪线程的运行情况, 取自 Mac OS X Internals .
如果程序暂停并立即恢复,线程的状态可以显示为UNINTERRUPTIBLE。大多数时候,它们报告为 WAITING,这并不奇怪,如果线程正在工作,它将显示为 RUNNING。
我不明白的是,当我暂停程序并查看线程状态时,它们仍然显示为WAITING。我本以为他们的状态是 STOPPED 或 HALTED
有人可以解释为什么他们仍然显示为 WAITING 以及他们什么时候会被STOPPED 或HALTED。此外,在某处是否有另一个结构显示程序的状态及其以这种方式停止的线程?
最佳答案
在您的案例中显示“正在等待”是因为您没有终止程序而是暂停了程序,而 Stopped 或 Halted 状态通常发生在程序由于某些运行时错误而立即停止工作时。至于你的第二个问题,我认为没有其他结构可以显示程序的状态。干杯
关于c - 暂停进程时的底层机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20490690/