信号实现父子进程之间的同步:sigsuspend的作用
发布时间:2016-09-24 07:19:04 所属栏目:Linux 来源:站长网
导读:副标题#e# 函数原型: #include signal.h> int sigsuspend(const sigset_t *mask); 作用: 用于在接收到某个信号之前,临时用mask替换进程的信号掩码,并暂停进程执行,直到收到信号为止。 The sigsuspend() function replaces the current signal mask of
结果: $a.out in critical region: SIGINT ^C in sig_int: SIGINT after return from sigsuspend: SIGINT 如果按照sig_handler先返回,那么SIGINT是不该被打印出来的,因为那时屏蔽字还没有恢复,所有信号都是不阻塞的。那么是Stevens说错了么?当然没有,只是Stevens没有说请在sigsuspend的原子操作中到底做了什么? sigsuspend的整个原子操作过程为: (1) 设置新的mask阻塞当前进程; (2) 收到信号,恢复原先mask; (3) 调用该进程设置的信号处理函数; (4) 待信号处理函数返回后,sigsuspend返回。 #include <stdio.h> (编辑:徐州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |