linux学习笔记12-用户信号

用户信号

  前几节,主要使用的系统信号,在程序中一般使用SIGUSR1和SIGUSR2

使用SIGUSR1信号

#include <stdio.h>
#include <stdlib.h>

#include <signal.h>

//用sigaction替代signal函数的功能
int mysignal(int signo,void (*func)(int))
{
	struct sigaction act,oact;
	act.sa_handler = func;
	sigemptyset(&act.sa_mask);  //必须用sigemptyset初始化sigcation的sa_mask成员
	act.sa_flags = 0;
	return sigaction(signo,&act,&oact);
}

//信号触发处理动作的函数
void signal_handler(int signo)
{	
	switch(signo)
	{
 	   case SIGUSR1:
		printf("user signal!\n");	        
	   	exit(1);               //退出程序
		break;
	}
}

int main(int argc,char *argv[])
{	
	mysignal(SIGUSR1,signal_handler);  //注册SIGUSR1信号	
	while(1)
	{
		printf("wait alarm!\n");
		sleep(5);
	}
	return 0;
}


秋风 2016-11-26