当前位置: 技术问答>linux和unix
请问如何忽略interrupted system call
来源: 互联网 发布时间:2016-06-22
本文导语: 这是由哪个信号产生的? 要怎么忽略他? | 早期unix信号的问题 1. 信号可能会丢失:信号发生了进程却不知道 2. 信号控制力弱:比如有时用户希望通知内核阻塞信号(不要忽略该信号,而...
这是由哪个信号产生的? 要怎么忽略他?
|
早期unix信号的问题
1. 信号可能会丢失:信号发生了进程却不知道
2. 信号控制力弱:比如有时用户希望通知内核阻塞信号(不要忽略该信号,而是在其发生时记住它,然后在进程作好了准备时再恢复之)这种阻塞信号的能力当时并不具备。
3. 信号被抓获的时候,信号处理程序会被重置为DFL。
4. 慢性系统调用被中断时,必须手工重启之。下面的代码便是个例子:
again:
if ( (n = read(fd, buff, BUFFSIZE))
1. 信号可能会丢失:信号发生了进程却不知道
2. 信号控制力弱:比如有时用户希望通知内核阻塞信号(不要忽略该信号,而是在其发生时记住它,然后在进程作好了准备时再恢复之)这种阻塞信号的能力当时并不具备。
3. 信号被抓获的时候,信号处理程序会被重置为DFL。
4. 慢性系统调用被中断时,必须手工重启之。下面的代码便是个例子:
again:
if ( (n = read(fd, buff, BUFFSIZE))