signal sigaction alarm函数

1、信号是一种异步通信机制(和单片机里面的中断很像)

2、信号的目的:用来通信

3、信号的本质是int 型的数字编号,在/usr/include/i386-linux-gnu/bits/signum.h被宏定义(ubuntu系统)

4、常见的信号介绍

(1)SIGINT             2                                Ctrl+C是OS送给前台进程组的每一个进程

(2)SIGABRT         6                                调用abort函数,进程异常终止

(3)SIGPOLL         8                                 指示一个异步IO

(4)SIGKILL            9                                杀死进程的终极办法
(5)SIGSEGV         11                              无效存储访问时OS发出该信号
(6)SIGPIPE           13                             涉及管道和socket
(7)SIGALRM            14                          涉及alarm函数的实现
(8)SIGTERM            15                          kill命令发送的OS默认终止信号
(9)SIGCHLD            17                          子进程终止或停止时OS向其父进程发此信号

5、写了一个示例代码

#include <stdio.h>
#include <unistd.h>
#include <signal.h>

void func_alarm(int sig)
{
    if(sig != SIGALRM)
    {
        return;
    }
    printf("alarm happened\n");
}


int main(void)
{
    int ret = -1;
//    signal(SIGALRM,func_alarm);   //signal的用法
    struct sigaction *act;
    act->sa_handler = func_alarm;   //c语言中结构指针和结构体成员名用->
    sigaction(SIGALRM,act,NULL);    //查man手册


    ret = alarm(5);
    printf("1st alarm ret = %d\n",ret);//ret = 0 表示alarm成功
    sleep(3);
    ret = alarm(5);
    printf("2st alarm ret = %d\n",ret);//ret = 2 表示alarm距离上次警报剩2s
    sleep(2);
    ret = alarm(0);
    printf("3st alarm ret = %d\n",ret);//ret = 3 同上,alarm(0)取消警报
    while(1);
    return 0;
}

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值