Linux kernel Linux中的延迟信号处理
我试图弄清楚如何阻止Linux内核2.4(用户空间)中的信号调用其处理程序,但保持它可供以后处理,最好是在我重新激活对所述信号的处理时 函数sigprocmask似乎出现在我所有的搜索结果中,但我找不到一个好的、清晰的描述来解释被阻止的信号是否被“保存”以供以后处理,如果是的话,在我准备好的时候在哪里以及如何处理它 有人能澄清一下发生了什么,最好是用一个代码示例?Linux kernel Linux中的延迟信号处理,linux-kernel,Linux Kernel,我试图弄清楚如何阻止Linux内核2.4(用户空间)中的信号调用其处理程序,但保持它可供以后处理,最好是在我重新激活对所述信号的处理时 函数sigprocmask似乎出现在我所有的搜索结果中,但我找不到一个好的、清晰的描述来解释被阻止的信号是否被“保存”以供以后处理,如果是的话,在我准备好的时候在哪里以及如何处理它 有人能澄清一下发生了什么,最好是用一个代码示例? 提前谢谢 我真的说不出比信号(7)手册页更好的了: 一个信号可能被阻塞,这 意味着它不会被交付 直到后来它被解锁。之间 它生成的时间
提前谢谢 我真的说不出比
信号(7)
手册页更好的了:
一个信号可能被阻塞,这
意味着它不会被交付
直到后来它被解锁。之间
它生成的时间和时间
它被传递了一个信号,据说是
待定
进程中的每个线程都有一个
独立信号掩码
指示所接收的信号集
线程当前正在阻塞。A.
线程可以操纵其信号掩码
使用pthread\u sigmask(3)
。在一个
传统单螺纹
应用程序,sigprocmask(2)
可以
用于操纵信号掩码
因此,您可以使用sigprocmask()
阻止和解除阻止信号。如果在阻塞信号时引发该信号,则在解除阻塞之前不会调用处理程序。如果信号在解除阻塞时处于挂起状态,则会像往常一样调用该信号的处理程序
请注意,给定的信号要么是挂起的,要么不是;它不能“挂起两次”(或更多)。如果信号在被阻塞时被提升两次,它仍然只会被传递一次