您的位置:首页 > 运维架构 > Linux

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

2012-04-13 14:48 405 查看
#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");
         }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: