/******************************************************
原理:
创建一个管道,一个读 一个写, 让epoll监控读端,如果信号发生,就将信号值写入到管道中
这样epoll就能从读端读出信号值
***********************************************/
#define _GNU_SOURCE
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/epoll.h>
#include <signal.h>
#include <string.h>
//用于管道0读 1写
int g_sigpipe[2]={0};
//用于存放信号的默认信息
struct sigaction *g_old_sighandler = NULL;
//监控的最大信号值
int g_maxsignal = 0;
//epoll监控的事件
struct epoll_event g_sigevet={0};
int close_sigpipe(void)
{
int i;
for(i = 0; i<2; i++)
{
if(g_sigpipe[i] > 0)
close(g_sigpipe[i]);
}
}
int init_epoll(void)
{