#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <signal.h>
char buf[1024];
void signal_handler(int type)
{
switch (type)
{
case SIGINT:
printf("catch SIGINT\n");
//write(STDOUT_FILENO,"catch SIGINT\n",sizeof("catch SIGINT\n"));
break;
//kill信号是不可捕捉的,默认退出的,这儿这样写没有用
case SIGKILL:
printf("catch SIGKILL\n");
//write(STDOUT_FILENO,"catch SIGKILL\n",sizeof("catch SIGKILL\n"));
break;
case SIGALRM:
printf("catch SIGALRM\n");
//write(STDOUT_FILENO,"catch SIGALRM\n",sizeof("catch SIGALRM\n"));
break;
default:
printf("catch unrecognized signal\n");
//write(STDOUT_FILENO,"catch unrecognized signal\n",sizeof("catch unrecognized signal\n"));
break;
}
}
int main(int argc, char *argv[])
{
memset(buf, 0, sizeof(buf));
signal(SIGINT, signal_handler);
signal(SIGKILL, signal_handler);
signal(SIGALRM, signal_handler);
int i = 0;
char s[128];
memset(s, 0, sizeof(s));
while (1)
{
sprintf(s, "SIGINT = %d,SIGKILL = %d,SIGALRM = %d,index = %d\n", SIGINT, SIGKILL, SIGALRM, i++);
write(STDOUT_FILENO, s, sizeof(s));
pause();
}
exit(0);
}
linux 信号
最新推荐文章于 2022-11-02 13:20:15 发布