首页 > 代码库 > 一、进程与信号不可靠问题

一、进程与信号不可靠问题

进程在处理过程中是否还可以接收处理信号,相同信号/不同信号

范列

#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 finished3267 catch SIGINTprocess the sigint finished进程处理中发送不同信号,先发送ctrl+c 在发送ctrl+z^C3267 catch SIGINT^Z3267 catch SIGTSTPprocess the sigtstp finishedprocess the sigint finished

结论

进程处理中发送相同信号/不同信号仍然会处理,但是超过2次进程就会屏蔽

 

一、进程与信号不可靠问题