当前位置: 技术问答>linux和unix
signal的处理函数问题
来源: 互联网 发布时间:2016-01-07
本文导语: 有些例子: void sig_cld() { pid_t pid; int status; if (signal(SIGCLD,sig_cld)!= -1) { pid = wait(&status); printf("%dn",pid); } } 为什么sig_cld()中还要调用一次signal(SIGCLD,sig_cld) ...
有些例子:
void sig_cld() {
pid_t pid;
int status;
if (signal(SIGCLD,sig_cld)!= -1) {
pid = wait(&status);
printf("%dn",pid);
}
}
为什么sig_cld()中还要调用一次signal(SIGCLD,sig_cld)
void sig_cld() {
pid_t pid;
int status;
if (signal(SIGCLD,sig_cld)!= -1) {
pid = wait(&status);
printf("%dn",pid);
}
}
为什么sig_cld()中还要调用一次signal(SIGCLD,sig_cld)
|
为了避免不可靠信号,早期的unix版本中,在进程每次接到信号对其进行处理时,随即将该信号的动作复位为默认值SIG_DFL,所以在接收到信号的处理函数中立即再设置信号处理函数,防止以前的函数设置丢失!
但按照楼主这样些有可能执行两次处理函数,应该在wait后在设置signal。
情参见《unix环境高级编程 2版》248页。
但按照楼主这样些有可能执行两次处理函数,应该在wait后在设置signal。
情参见《unix环境高级编程 2版》248页。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。