关闭

用sigaction实现signal

157人阅读 评论(0) 收藏 举报
#include <errno.h>
#include <stdio.h>
#include <signal.h>
#include <unistd.h>

typedef void (*sig_handler_t)(int);

void sig_int(int signo);

sig_handler_t signal(int signo, sig_handler_t func);

void sig_int(int signo)
{
    printf("caught signal INTERRUPT!\n");
}

sig_handler_t signal(int signo, sig_handler_t func)
{
    struct sigaction act, oact;
    
    sigemptyset(&act.sa_mask);
    act.sa_handler = func;
    
    if(sigaction(signo, &act, &oact) < 0)
    {   
        perror("sigaction");
        return 0;
    }   
    return oact.sa_handler;
}

int main(int argc, char **agrv)
{
    signal(SIGINT, sig_int);
    while(1)
    {   
        pause();
    }   
    return 0;
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:7242次
    • 积分:184
    • 等级:
    • 排名:千里之外
    • 原创:12篇
    • 转载:4篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档