Linux 信号详解三(sleep,raise)

sleep()函数
1.sleep()函数作用:让进程睡眠
2.能被信号打断,然后处理信号函数以后,就不再睡眠,直接向下执行代码
3.sleep函数的返回值是剩余秒数

//sleep 函数
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <signal.h>

void catch_signal(int sign)
{
    switch(sign)
    {
    case SIGINT:
        printf("accept signal!\n");
        break;
    default:
        break;
    }
}

int main(int arg,char *args[])
{
    //注册信号
    if(signal(SIGINT,catch_signal)==SIG_ERR)
    {
        perror("signal error");
        return-1;
    }
    int num=0;
    num=sleep(100);
    //手动执行 ctrl+C  进程被唤醒
    if(num>0)
    {
        printf("sleep()函数被打算睡眠,醒过来了!\n");
    }
    //说明:sleep()函数是可中断睡眠

    printf("新的测试!\n");
    //再次设计sleep()函数,让其sleep需要的时间
    num=15;
    do{
        num=sleep(num);
        printf("被唤醒了,但是还要继续睡眠!剩余时间%d\n",num);
    }while(num);


    printf("game over!\n");
    return 0;
}

 


int raise(int sig)
--给自己发送信号,raise(sig)等价于kill(getpid(),sig)
killpg
--给进程组发送信号,killpg(pgrp,sig)等价于kill(-pgrp,sig)
sigqueue
--给进程发送信号,支持排队,可以附带信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值