现在的位置: 首页 > 综合 > 正文

Linux程序退出时的信号捕获及处理

2013年12月11日 ⁄ 综合 ⁄ 共 737字 ⁄ 字号 评论关闭
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <signal.h>

// 程序退出时的函数操作
void test(int n,struct siginfo *siginfo,void *myact)
{
         printf("signal number:%d\n",n);/** 打印出信号值 **/
         printf("siginfo signo:%d\n",siginfo->si_signo); /** siginfo结构里保存的信号值 **/
         printf("siginfo errno:%d\n",siginfo->si_errno); /** 打印出错误代码 **/
         printf("siginfo code:%d\n",siginfo->si_code);   /** 打印出出错原因 **/
	exit(0);
}
int main(void)
{
         /** install signal use sigaction **/
         struct sigaction act;
         sigemptyset(&act.sa_mask);   /** 清空阻塞信号 **/
         act.sa_flags=SA_SIGINFO;     /** 设置SA_SIGINFO 表示传递附加信息到触发函数 **/
         act.sa_sigaction=test;
         if(sigaction(SIGINT,&act,NULL) < 0)
         {
                 printf("install signal error\n");
         }
         while(1)
         {
                 sleep(1);
                 printf("wait for the signal\n");
         }
}

【上篇】
【下篇】

抱歉!评论已关闭.