/*
* Catch SIGUSR1 sent from kernel mode Interrupt routine.
* 捕捉内核态中断服务程序发送的SIGUSR1信号。
* 用户可以在用户态编写自己的中断处理程序。
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <errno.h>
#include <fcntl.h>
#include <sys/types.h>
#include <signal.h>
//#define MODE1
//#define MODE2
void signal_handler(int signo)
{
printf("####in %s\n", __func__);
}
int main(int argc, char **argv)
{
#if defined (MODE1)
signal(SIGUSR1, (void *)signal_handler); //这样可以
#else //这样也可以,第一种方式更加简单一些
struct sigaction action;
action.sa_handler = signal_handler;
action.sa_flags = 0;
sigaction(SIGUSR1, &action, NULL);
#endif
while(1);
return 0;
}
|