void ( *sa_handler)(int); //信号处理函数地址 sigset_t sa_mask; //一个调用信号捕捉函数之前要加到进程信号屏蔽字中的信号集 int sa_flags; //信号处理选项 void (*sa_sigaction)(int,siginfo_t *,void *); } 对于sigaction 函数本身我们不做多介绍。我们重点是在 sa_flags 的不同值的情况下,siga...
intmain(){ structsigaction sa; // 设置处理程序为 handle_sigint sa.sa_handler=handle_sigint; sigemptyset(&sa.sa_mask); sa.sa_flags=0; // 使用 sigaction 设置新的信号处理动作 if(sigaction(SIGINT,&sa,NULL)==-1){ perror("sigaction"); return1; } // 主循环,持续运行直到捕捉到信号 while...
// 这个值可以是0,表示使用sa_handler,也可以是SA_SIGINFO表示使用sa_sigaction int sa_flags; // 被废弃掉了 void (*sa_restorer)(void); }; */ #include <sys/time.h> #include <stdio.h> #include <stdlib.h> #include <signal.h> void myalarm(int num) { printf("捕捉到了信号的编号是:%d...
a)SIGIGN:忽略该信号 b) SIGDFL:执行系统默认动作 c) 处理函数名:自定义信号处理函数 2) samask:信号阻塞集,在信号处理函数执行过程中,临时屏蔽指定的信号。 3) saflags:用于指定信号处理的行为,通常设置为 0,表使用默认属性。它可以是一下值的“按位或”组合: Ø SARESTART:使被信号打断的系统调用自动重...
③ sa_flags:通常设置为0,表使用默认属性:为0的时候,可以屏蔽正在处理的信号(若在处理2号信号时又有2号信号,则此时传来的2号信号会被屏蔽)。 #include <stdlib.h>#include<stdio.h>#include<signal.h>voidfunc(intsignal) { printf("%d号信号被捕捉。\n", signal); ...
void(*sa_handler)(int); void(*sa_sigaction)(int,siginfo_t *,void *); sigset_tsa_mask; intsa_flags; } siginfo_t在linux2.6.39/include/asm-generic/siginfo.h中实现: sa_flags的取值如下表,取0表示选用所有默认选项。 SA_NOCLDSTOP:用于表示信号SIGCHLD,当子进程被中断时,不产生此信号,当且仅当...
成功: 0 出错: 1 首先给出了 sigaction 的定义, 代码如下: structsigaction{ void(*sa_handler)(int);//函数指针 void(*sa_sigaction)(int,siginfo_t*,void*);//带参数的函数指针 sigset_tsa_mask;//信号屏蔽集 intsa_flags;//标志位
sa.sa_flags = 0;// 设置信号处理程序 sigaction(SIGINT, &sa, NULL);// 无限循环,等待信号 while (true){ sleep(1);} return 0;} 上述代码中,我们定义了一个名为signalHandler的函数作为信号处理程序。在主函数中,我们首先创建了一个struct sigaction结构体,并设置其成员sa_handler为我们...
sa_mask,信号屏蔽集,可以通过函数sigemptyset/sigaddset等来清空和增加需要屏蔽的信号,上面代码中,对信号SIGINT处理时,如果来信号SIGQUIT,其将被屏蔽,但是如果在处理SIGQUIT,来了SIGINT,则首先处理SIGINT,然后接着处理SIGQUIT。 sa_flags如果取值为0,则表示默认行为。还可以取如下俩值,但是我没觉得这俩值有啥用。
返回0 成功,-1 失败 1.2 struct sigaction 结构体 代码语言:javascript 复制 struct sigaction{void(*sa_handler)(int);void(*sa_sigaction)(int,siginfo_t*,void*);sigset_t sa_mask;int sa_flags;void(*sa_restorer)(void);}; sa_handler : 不带附加参数的信号处理函数指针 ...