【发布时间】:2013-12-27 17:55:27
【问题描述】:
我有一个程序需要它暂停和恢复另一个程序。为此,我使用 kill 函数,或者来自以下代码:-
kill(pid, SIGSTOP); // to pause
kill(pid, SIGCONT); // to resume
或者从命令行类似
kill -STOP <pid>
kill -CONT <pid>
我可以使用来自Mac OS X Internals 的this code 跟踪线程的情况。
如果程序暂停并立即恢复,线程的状态可以显示为UNINTERRUPTIBLE。大多数情况下,它们报告为 WAITING,这并不奇怪,如果线程正在工作,它将显示为 RUNNING。
我不明白的是,当我暂停程序并查看线程的状态时,它们仍然显示为 WAITING。我本来希望他们的状态是 STOPPED 或 HALTED
谁能解释为什么他们仍然显示为WAITING,他们什么时候会STOPPED或HALTED。此外,是否有其他结构显示程序的状态及其线程以这种方式停止?
【问题讨论】:
标签: c macos pthreads kernel signals