gpt4 book ai didi

c - 阻塞信号也是挂起信号吗?

转载 作者:行者123 更新时间:2023-12-03 23:44:13 25 4
gpt4 key购买 nike

我们知道应用程序可以使用 sigprocmask 显式阻止和取消阻止选定的信号。函数,所以假设我们已经使用这个函数来阻止 SIGINT ,因此内核设置阻塞 vector 中的相应位。如果我们运行程序并按 Ctrl + C 发送 SIGINT ,因为这个信号当前被阻塞了,进程没有 Action (进程不会被终止)。
我的问题是,即使这个信号被阻塞,内核是否也会在待处理 vector 中设置相应的位,以便当我们解除阻塞这个信号时,SIGINT在pending 会被立即接收的过程吗?或之前的 SIGINT不算数,你必须触发一个新的 SIGINT ?

最佳答案

我不确定行为会如何(或是否)因平台或库实现而异,但是:

https://man7.org/linux/man-pages/man7/signal.7.html

A signal may be blocked, which means that it will not be delivereduntil it is later unblocked. Between the time when it is generatedand when it is delivered a signal is said to be pending.


所以是的,为了回答您的问题,Ctl-C 将“待定”,如果您取消阻止 SIGINT,则应该交付。
也值得考虑 sigaction() ,这将使您的进程完全忽略信号。

关于c - 阻塞信号也是挂起信号吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63866300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com