仪器社区

怎么知道interrupted system call是哪个信号引起的

g15809574423 2015-11-01
评论
全部评论
飥諼谟714
早期unix信号的问题
1. 信号可能会丢失:信号发生了进程却不知道
2. 信号控制力弱:比如有时用户希望通知内核阻塞信号(不要忽略该信号,而是在其发生时记住它,然后在进程作好了准备时再恢复之)这种阻塞信号的能力当时并不具备。
3. 信号被抓获的时候,信号处理程序会被重置为DFL。
4. 慢性系统调用被中断时,必须手工重启之。下面的代码便是个例子:
again:
if ( (n = read(fd, buff, BUFFSIZE)) < 0) {
if (errno == EINTR)
goto again; /* just an interrupted system call */
/* handle other errors */
}
5 0 2018-07-04 0条评论 回复
Wait那份忧伤
早期unix信号的问题
1. 信号可能会丢失:信号发生了进程却不知道
2. 信号控制力弱:比如有时用户希望通知内核阻塞信号(不要忽略该信号,而是在其发生时记住它,然后在进程作好了准备时再恢复之)这种阻塞信号的能力当时并不具备。
3. 信号被抓获的时候,信号处理程序会被重置为DFL。
4. 慢性系统调用被中断时,必须手工重启之。下面的代码便是个例子:
again:
if ( (n = read(fd, buff, BUFFSIZE)) < 0) {
if (errno == EINTR)
goto again; /* just an interrupted system call */
/* handle other errors */
}
19 0 2015-11-02 0条评论 回复
您可能感兴趣的社区主题
加载中...
发布 评论