linux 信号

来源:互联网 发布:易幻网络待遇怎么样 编辑:程序博客网 时间:2024/06/05 15:32
#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);}

0 0
原创粉丝点击