当前位置: 首页 > 面试题库 >

关于标准信号的传送

家志学
2023-03-14
问题内容

相比之下,如果在当前 阻塞 标准信号的情况下传递了该信号的多个实例,则仅将一个实例排队。

我认为上面的描述不太清楚,并引起了我的歧义:

如果未 阻止 特定信号怎么办,同一信号的多个实例将排队吗?

信号在哪里排队,是过程的特定位置还是全局位置?

如何处理排队的信号,是否有可能同时处理两个信号,或者保证信号将被一个接一个地处理?

所以这里实际上是3个问题。


问题答案:

如果未阻止特定信号怎么办,同一信号的多个实例将排队吗?

这取决于是否已使用sigaction结构和sigaction()功能为信号设置了SA_SIGINFO标志,以及您的系统是否对_POSIX_REALTIME_SIGNALS有一个有效的定义(现代Linux内核具有)。如果两个实例都为真,则符合这两个条件的任何到达信号都将在每个进程队列中排队,直到它们被传递或接受,直到html" target="_blank">操作系统对给定信号队列中的项目数施加限制。在那一点之后,丢弃到达该信号类型的任何其他信号。

如果这些情况中的任何一种都不成立,则仅处理当前到达的信号,并且丢弃在当前信号处理程序运行时到达的 具有相同信号类型的
任何其他信号。同样,如果您正在阻止信号,并且两个或多个信号到达该过程并且没有传递,则它们会合并在一起成为一个信号事件。但是同样,这仅在不满足以上两个条件的情况下……否则,将相同类型的多个信号事件排队。

还要注意一点……陈述的两个条件是针对POSIX规范的,但是Linux将对任何实时信号进行排队,即使未为该信号设置SA_SIGINFO。因此,这意味着对应于范围SIGRTMIN和SIGRTMAX的任何信号。

信号在哪里排队,是过程的特定位置还是全局位置?

它存储在每个进程的队列中。

如何处理排队的信号,是否有可能同时处理两个信号,或者保证信号将被一个接一个地处理?

这取决于您如何使用sigaction结构和sigaction()功能设置信号处理程序。不能保证在信号处理程序运行时会阻止其他任何信号。可以在sigaction结构内设置一个信号掩码,以确定在信号处理程序运行时哪些信号被阻塞。信号本身会被阻塞,直到信号处理程序完成为止,但是如果您的结构中设置的信号处理程序未设置信号屏蔽,则其他信号会中断您当前的信号处理程序sigaction。因此,您在信号处理程序中所做的任何事情都应该是异步安全的,并且您不应像在信号处理程序中那样调用任何非异步安全的函数fprintf()因此,可以保证信号本身按FIFO顺序处理(即,一个信号不会中断自身),但是如果您没有故意阻止它们,则其他信号也会中断您当前的信号处理程序。请记住,在信号处理程序中设置信号掩码以阻止其他信号中断您的处理程序是一个
非常糟糕的
主意,并且不是原子操作,因此请勿这样做。如果要在信号处理程序运行时阻止其他信号,请在sigaction传递给的结构中提供信号掩码sigaction()



 类似资料:
  • 让我们先看一个简单的例子: 由于一般的等于符号 ==、!=经常会出现问题,以至于我们不得不使用严格等于(===、!==)。 当然有人说这些规则也有例外,我不同意这个观点2。 怀揣的这个问题,我们现在就来看一下这个奇怪的现象:== 是不必要。 这个“正常”的等号(==)有很多怪癖。 虽然他很宽容(非严格比较),当与真值或者假值比较时,它会忽略类型(详见怪癖1): > 0 == false // O

  • 这一章我们讲解了标准化的重要性,即当不同特征的评分尺度不一致时,为了得到更准确的距离结果,就需要将这些特征进行标准化,使他们在同一个尺度内波动。 虽然大多数数据挖掘工程师对标准化的理解是一致的,但也有一些人要将这种做法区分为“正规化”和“标准化”两种。 其中,“正规化”表示将值的范围缩小到0和1之间;“标准化”则是将特征值转换为均值为0的一组数,其中每个数表示偏离均值的程度(即标准偏差或绝对偏差)

  • 在了解了Linux的信号基础之后,Python标准库中的signal包就很容易学习和理解。signal包负责在Python程序内部处理信号,典型的操作包括预设信号处理函数,暂停并等待信号,以及定时发出SIGALRM等。要注意,signal包主要是针对UNIX平台(比如Linux, MAC OS),而Windows内核中由于对信号机制的支持不充分,所以在Windows上的Python不能发挥信号系统

  • 本页列出了所有Apache遵守的相关标准,并伴有简要描述。 除了下面列出的参考信息,下列资源也值得看看: http://purl.org/NET/http-errata - HTTP/1.1 勘误表 http://www.rfc-editor.org/errata"http://ftp.ics.uci.edu/pub/ietf/http/"> http://ftp.ics.uci.edu/pub/

  • 格式限制 1、不支持全变量模板(是指无法判断当前短信的结构和使用场景); 2、营销短信内容后面需要添加退订方式,支持“TD、T、N”进行短信退订回复(营销通短信营销已默认对所有发送的短信追加 “回T退订”)。 3、鉴于特殊符号可能会导致短信出现乱码,不支持如¥ ★以及包含可通过按键录入的组合型特殊符号,如^_^&,☞,√,※。 内容限制 1、不能给非会员用户发送营销短信; 2、需严格遵守短信内容规

  • 除了这里提到内容外,每个独立的工程都期望能建立附加标准。下面是每个工程程序管理组需要考虑的问题中的一部分: 哪些额外的命名约定需要遵守?尤其是,那些用于全局数据的功能归类以及结构体或联合体成员名字的系统化的前缀约定非常有用。 什么样的头文件组织适合于工程特定的数据体系结构? 应该建立什么样的规程来审核lint警告?需要确立一个与lint选项一致的宽容度,保证lint不会针对一些不重要的问题给出警告