gpt4 book ai didi

c - Linux : Ignoring a signal inside a signal handler, 忽略所有此类连续信号

转载 作者:行者123 更新时间:2023-11-30 18:37:20 24 4
gpt4 key购买 nike

我有一个简单的程序来演示 Linux 的 C 信号处理。我只是为了实验而将其复杂化..

void sigquit(int signo)
{
printf("Recieved signo : %d\n",signo);
signal(SIGQUIT,SIG_IGN);
}

int main()
{

/* register the signal handler */
if(signal(SIGQUIT,sigquit) == SIG_ERR)
{
perror("Error handling SIGQUIT signal");
exit(1);
}
for(;;);
return 0;
}

我得到输出:

^\Recieved signo : 3
^\^\^\^\^\^\^\

而我期待的是这样的:

    ^\Recieved signo : 3
^\Recieved signo : 3
^\Recieved signo : 3
^\Recieved signo : 3

为什么只在第一次调用我的处理程序而不是进一步调用。我预计信号首先到达主线程,然后传递给处理程序。

最佳答案

signal(SIGQUIT,SIG_IGN);

从信号处理程序中,您告诉程序忽略该信号发生的任何进一步情况。因此,当您再次发送信号时,它会被忽略,就像您告诉它的那样。

关于c - Linux : Ignoring a signal inside a signal handler, 忽略所有此类连续信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37510219/

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