Unix中的进程状态

时间:2013-06-16 16:43:57

标签: unix process

我需要了解在调用pause()函数时Unix中的进程会发生什么。

考虑具有三种状态的简单状态图:就绪,运行和等待。如果我的程序只打印它的pid而不是暂停,程序将无限期地等待"等待"州?

如果它while(1) { pause() },它将无限期地在"等待"状态呢?

1 个答案:

答案 0 :(得分:2)

从联系手册:

  

pause()使调用进程(或线程)进入休眠状态,直到传递的信号终止进程或导致调用信号捕获函数。

因此程序可能无法无限期处于睡眠状态("等待",使用你的单词)。如果收到信号,它将离开该状态。但是,如果按照示例将pause()调用封闭在一个紧密的无限循环中,程序将在收到信号后再次运行,但会立即返回休眠状态。

当在pause()期间收到信号时,信号处理程序(如果有的话)将运行,并且一旦处理程序返回,控制将立即返回到pause()系统调用之后的点。