c - 暂停进程时的底层机制

标签 c macos pthreads kernel signals

我有一个程序需要暂停和恢复另一个程序。为此,我使用 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。我本以为他们的状态是 STOPPEDHALTED

有人可以解释为什么他们仍然显示为 WAITING 以及他们什么时候会被STOPPEDHALTED。此外,在某处是否有另一个结构显示程序的状态及其以这种方式停止的线程?

最佳答案

在您的案例中显示“正在等待”是因为您没有终止程序而是暂停了程序,而 Stopped 或 Halted 状态通常发生在程序由于某些运行时错误而立即停止工作时。至于你的第二个问题,我认为没有其他结构可以显示程序的状态。干杯

关于c - 暂停进程时的底层机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20490690/

相关文章:

c - 合法的数组赋值。是否可以?

c - linux猫: No such file or directory

objective-c - cocoa 中的不同透明度?

PHP pthreads : Fatal error: Class 'Thread' not found

c - 将整数指针分配给结构数组并且代码仍然被执行?

c++ - 通过 FlasCC 在 AS3 中使用解压库

c++ - fatal error : string. h:没有那个文件或目录

macos - 没有名为 ipykernel_launcher 的模块

c - 我应该使用 Helgrind 还是 DRD 进行线程错误检测?

c - 单个生产者和多个消费者