液位仪

the

face

shop

杂谈

1.设置信号处理函数
用户 能够降求本人的信号处理函数,然后使用signal函数将处理函数加载,函数原型
#include
void (*signal (int signo,void (*func)(int)))(int);
signo表现疑号值,func表现一个函数的指针,用来捕捉指订的疑号。func可来如下值之一:
SIG_IGN 纰漏该信号
SIG_DFL 利用体系默许的方法处理
SIG_ERR
signal函数的往归值也会去世一个函数的指针,那个指针施行上一次的信号处置步伐。假如犯错,前往SIG_ERR
//sig.c
#include
#include
#include
#include
void handler(int signo)
{
switch(signo){
case SIGUSR1:
printf("Parent : catch SIGUSR1/n");
break;
case SIGUSR2:
printf("Child : catch SIGUSR2/n");
break;
default: //由于原步伐只利用SIGUSR1和SIGUSR2两个信号,以是相对没有会施行到这里
printf("should not be here/n");
break;
}
return ;
}
int main(void)
{
pid_t ppid, cpid;
//设置信号处理程序
if(signal(SIGUSR1, handler) == SIG_ERR){
perror("can¡¯t set handler for SIGUSR1");
exit(1);
}
if(signal(SIGUSR2, handler) == SIG_ERR){
perror("can¡¯t set handler for SIGUSR2");
exit(1);
}
ppid = getpid();
if((cpid = fork())