进程与信号不可靠问题
Posted jmst
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程与信号不可靠问题相关的知识,希望对你有一定的参考价值。
进程在处理过程中是否还可以接收处理信号,相同信号/不同信号
范列
#include <signal.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> void set_signal(int signo) { if(signo == SIGINT) { printf("%d catch SIGINT\n",getpid()); sleep(5); printf("process the sigint finished\n"); } if(signo==SIGTSTP) { printf("%d catch SIGTSTP\n",getpid()); sleep(5); printf("process the sigtstp finished\n"); } } int main() { if(signal(SIGINT,set_signal)==SIG_ERR) { printf("signal error\n"); return 1; } if(signal(SIGTSTP,set_signal)==SIG_ERR) { printf("signal error\n"); return 1; } //暂停等待信号 while(1) pause(); }
编译执行
进程处理中中发送相同信号,先发送ctrl+c 在发送ctrl+c ^C3267 catch SIGINT ^Cprocess the sigint finished 3267 catch SIGINT process the sigint finished 进程处理中发送不同信号,先发送ctrl+c 在发送ctrl+z ^C3267 catch SIGINT ^Z3267 catch SIGTSTP process the sigtstp finished process the sigint finished
结论
进程处理中发送相同信号/不同信号仍然会处理,但是超过2次进程就会屏蔽
以上是关于进程与信号不可靠问题的主要内容,如果未能解决你的问题,请参考以下文章