05-等待信号
10.2.1 等待信号
出于调试和写演示代码的目的,POSIX定义了pause()系统调用,它可以使进程睡眠,直到进程接收到处理或终止进程的信号:
pause()只在接收到可捕获的信号时才返回,在这种情况下该信号被处理,pause()返回-1,并将errno设置为EINTR。如果内核发出的信号被忽略,进程不会被唤醒。
在Linux内核中,pause()是最简单的系统调用之一。它只执行两个操作。首先,它将进程置为可中断的睡眠状态。然后它调用schedule(),使Linux进程调度器找到另一个进程来运行。由于进程事实上不等待任何事件,在接收到信号前,内核是不会唤醒它的。实现该调用只需要两行C代码[2]。