当前位置:嗨网首页>书籍在线阅读

05-等待信号

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

10.2.1 等待信号

出于调试和写演示代码的目的,POSIX定义了pause()系统调用,它可以使进程睡眠,直到进程接收到处理或终止进程的信号:

475.png pause()只在接收到可捕获的信号时才返回,在这种情况下该信号被处理,pause()返回-1,并将errno设置为EINTR。如果内核发出的信号被忽略,进程不会被唤醒。

在Linux内核中,pause()是最简单的系统调用之一。它只执行两个操作。首先,它将进程置为可中断的睡眠状态。然后它调用schedule(),使Linux进程调度器找到另一个进程来运行。由于进程事实上不等待任何事件,在接收到信号前,内核是不会唤醒它的。实现该调用只需要两行C代码[2]