linux忽略的信号可以被子进程继承,linux – 可以忽略(丢失)信号吗?

我有一个通过信号与工人沟通的应用程序(特别是SIGUSR1 / SIGUSR2 / SIGSTOP).

我能相信无论发生什么,每个信号都将由处理程序传递和处理吗?

如果信号的发送速度快于应用程序处理信号的速度(例如,由于此时主机负载较高),会发生什么?

解决方法:

除了“太多信号”问题之外,可以明确忽略信号.从man 2 signal开始:

If the signal signum is delivered to the process, then one of the

following happens:

* If the disposition is set to SIG_IGN, then the signal is ignored.

A signal may be blocked, which means that it will not be delivered

until it is later unblocked. Between the time when it is generated

and when it is delivered a signal is said to be pending.

被阻止和被忽略的信号集都由子进程继承,因此可能会发生应用程序的父进程忽略或阻止其中一个信号.

在流程处理完之前的信号之前传递多个信号会发生什么?这取决于操作系统.上面链接的信号(2)联机帮助页讨论了它:

> System V会将信号处理重置为默认值.更糟糕的是,快速传递多个信号会导致递归(?)调用.

> BSD会自动阻止信号,直到处理程序完成.

>在Linux上,这取决于为GNU libc设置的编译标志,但我期望BSD行为.

标签:linux,signals

来源: https://codeday.me/bug/20190809/1631677.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值