zoukankan      html  css  js  c++  java
  • 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!
    ");
            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()函数被打算睡眠,醒过来了!
    ");
        }
        //说明:sleep()函数是可中断睡眠
    
        printf("新的测试!
    ");
        //再次设计sleep()函数,让其sleep需要的时间
        num=15;
        do{
            num=sleep(num);
            printf("被唤醒了,但是还要继续睡眠!剩余时间%d
    ",num);
        }while(num);
    
    
        printf("game over!
    ");
        return 0;
    }
    int raise(int sig)
    --给自己发送信号,raise(sig)等价于kill(getpid(),sig)
    killpg
    --给进程组发送信号,killpg(pgrp,sig)等价于kill(-pgrp,sig)
    sigqueue
    --给进程发送信号,支持排队,可以附带信息
  • 相关阅读:
    如何创建并运行Java线程
    PHP捕获Fatal error错误与异常处理
    WEB系统启动时加载Log4j的配置文件
    Log4j日志配置
    CharacterEncodingFilter-Spring字符编码过滤器
    Struts2的属性驱动与模型驱动的区别
    Filter之——GZIP全站压缩
    乱码问题总结
    【总结】编写自己的JDBC框架
    四大域总结
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/6080251.html
Copyright © 2011-2022 走看看