微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在UNIX中处理信号的差异

使用sigprocmask()屏蔽信号和使用信号(< signal>,SIG_IGN)忽略信号之间有区别吗?
阻止与忽视不同.您通过使用sigaction()安装SIG_IGN来忽略信号.

在内核或进程生成信号后,内核将其挂起到某些进程.一旦该过程作用在信号上,该信号就被传送到一个进程.一个进程可以阻塞一个信号,使信号处于待发状态,直到它被解除阻塞.未被阻挡的信号将立即发送.信号掩码指定哪些信号被阻塞.一个进程可以确定哪些信号正在等待.

大多数UNIX不会排列同一待处理信号的多个实例;每个信号只有一个实例可以等待.

对于待处理的信号,对SIG_IGN设置信号动作将导致待处理信号被丢弃,无论其是否被阻止.

而过程信号掩码包含当前被阻止的一组信号.

当进程阻塞信号时,保持信号的发生,直到信号被解除阻塞(阻塞的信号不会丢失,而忽略的信号会丢失).

原文地址:https://www.jb51.cc/bash/386640.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐