Unix中的进程状态

Unix中的进程状态,unix,process,Unix,Process,我需要了解Unix中的进程调用pause()函数时会发生什么情况 考虑一个具有三种状态的简单状态图:就绪、运行和等待。如果我的程序只打印pid,然后暂停,程序是否会无限期地处于“等待”状态 如果它在(1){pause()}期间执行,它也将无限期地处于“等待”状态?从手册页: pause()使调用进程(或线程)休眠,直到传递了终止进程或调用信号捕获函数的信号为止 因此,程序可能不会无限期地处于睡眠状态(“等待”,用你的话来说)。如果收到信号,它将离开该状态。但是,如果按照您的示例将pause()调

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

考虑一个具有三种状态的简单状态图:就绪、运行和等待。如果我的程序只打印pid,然后暂停,程序是否会无限期地处于“等待”状态

如果它在(1){pause()}期间执行
,它也将无限期地处于“等待”状态?

从手册页:

pause()使调用进程(或线程)休眠,直到传递了终止进程或调用信号捕获函数的信号为止

因此,程序可能不会无限期地处于睡眠状态(“等待”,用你的话来说)。如果收到信号,它将离开该状态。但是,如果按照您的示例将
pause()
调用包含在一个紧密的无限循环中,则当收到信号时,程序将再次运行,但会立即返回睡眠状态

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