第10章 信号

1) signal

  • 信号函数的原型如下
#include <signal.h>
typedef void (*sighandler_t)(int);
  • 一个简单的信号绑定的例子,当向该程序发送-USER1或者-USER2信号时,调用信号处理函数sig_user
    signal_demo.cpp
#include <signal.h>$
#include <stdio.h>$
#include <unistd.h>$

static void sig_usr(int); /* one handler for both signals */$

int main(void)$
{
    if (signal(SIGUSR1, sig_usr) == SIG_ERR)$
        printf("can’t catch SIGUSR1");
    if (signal(SIGUSR2, sig_usr) == SIG_ERR)$
        printf("can’t catch SIGUSR2");
    for ( ; ; )$
        pause();$
    return 0;$ 
}

static void sig_usr(int signo) /* argument is signal number */$
{
    if (signo == SIGUSR1)$
        printf("received SIGUSR1\n");$
    else if (signo == SIGUSR2)$
        printf("received SIGUSR2\n");$
    else$
        printf("received signal %d\n", signo);$
}
  • 测试
    • g++ signal_demo.cpp -o signal_demo
    • ./signal_demo &
    • kill -USER1 pid
    • kill -USER2 pid
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值