SIGINT
优先级高于SIGSEGV
SIGSEGV
优先级高于SIGCHLD
如果一个进程首先收到了 SIGSEGV
信号,在它正在执行该信号的处理函数时(还没有执行完),此时收到了
SIGINT
信号,不考虑信号屏蔽,此时是否会先去执行
SIGINT
的处理函数?
如果一个进程首先收到了 SIGSEGV
信号,在它正在执行该信号的处理函数时(还没有执行完),此时收到了
SIGCHLD
信号,不考虑信号屏蔽,此时是否继续执行
SIGSEGV
的处理函数,执行完毕之后再去处理
SIGCHLD
?
最后修改于:
最后回复于:
回复主题帖
先去执行SIGINT的处理函数。
先去执行SIGCHLD处理函。
只有屏蔽信号集才会影响信号执行过程中是否被打断,优先级只会影响当多个信号待处理时的选择。
最后修改于:2024-06-12 14:38:25
那如果在处理SIGILL的过程中,收到了SIGINT和SIGKILL,当前进程去处理SIGINT,那么是把SIGKILL放入等待集,还是说等待SIGINT处理结束之后就去处理SIGKILL(不管等待集中的其他信号)
最后修改于:2024-06-13 17:20:07
SIGKILL是不能被阻塞的,所以如果收到了SIGKILL,是会直接执行SIGKILL信号然后结束进程的;对于其他信号,信号的被打断只会与信号执行时进程的信号屏蔽集有关。
最后修改于:2024-06-13 17:57:04
那如果不是sigkill呢,例如处理SIGILL的时候收到了SIGINT和SIGCHLD,这两个信号都没有被屏蔽,由于优先级,先处理SIGINT,那么剩下的SIGCHLD是进入等待集(SIGINT和SIGILL都处理完后处理),还是SIGINT处理完后直接处理SIGCHLD
最后修改于:2024-06-13 18:01:20
先处理SIGINT,把SIGCHLD放入等待集中,如果在SIGINT处理过程中,又到了需要判断是否有待处理信号并处理时,就会先去执行SIGCHLD,然后返回SIGINT,最后返回原来的信号。
最后修改于:2024-06-13 18:57:14
请问如果同时受到sigint和sigchld,没有任何屏蔽的情况下,sigint的handler一定先进入吗
最后修改于:2024-06-14 17:58:58
另外,对于讨论区中的各个共性问题的解答,课程组能否汇总至任务指导页面?
最后修改于:2024-06-14 20:03:50
支持,现在的指导书感觉有点简略,给的样例也没有涉及复杂情况
最后修改于:2024-06-14 20:37:47
求求来点猛一点的测试点,真测不出来了
最后修改于:2024-06-15 19:19:17
"又到了需要判断是否有待处理信号并处理时",这里的时机具体是什么时候,如果是笼统的返回用户态的话,好像不同的处理方式测试出来的结果还不一样
最后修改于:2024-06-15 23:24:03