SA_RESTART用在为某个信号设置信号处理函数时,给该信号设置的一个标记。

一般情况下 ,进程正在执行某个系统调用,那么在该系统调用返回前信号是不会被递送的。但慢速系统调用除外,如读写终端、网络、磁盘,以及wait和pause。这些系 统调用都会返回-1,errno置为EINTR当系统调用被中断时,我们可以选择使用循环再次调用,或者设置重新启动该系统调用 (SA_RESTART)。

一旦给信号设置了SA_RESTART标记,那么当执行某个阻塞系统调用时,收到该信号时,进程不会返回,而是重新执行该系统调用。

 posted on 2014-11-19 16:25  yhqruc  阅读(3426)  评论(1编辑  收藏  举报