• Linux-pause(2)的使用(day10)


    目录

    一、信号阻塞与信号未决

    二、pause(2)的使用

    三、信号传送过程处理

    四、可重入函数

    五、编写代码实现信号处理函数的继承

    六、setitimer实现定时器


    二、pause(2)的使用

    #include <unistd.h>
    int pause(void);

    功能:
      pause() 函数使调用进程(或线程)睡眠状态,直到接收到信号,要么终止,或导致它调用一个信号捕获函数。
    返回值:
      The pause() function only returns when a signal was caught and the signal-catching function returned. In this case pause() returns -1, and errno is set to EINTR.

    标签描述
    EINTR a signal was caught and the signal-catching function returned.

    简单应用:

    #include<stdio.h>
    #include<signal.h>
    #include<unistd.h>
    void doit(int n){
        printf("recv %d signal
    ",n);
        return ;
    }
    
    int main(void){
        signal(2,doit);
        int f=pause();
        if(f==-1){
            perror("pause");
            //return 1;//此处如果使用return,pause被打断后将直接执行return 1,看不到后面的printf
        }
        printf("pause after...
    ");
        return 0;
    }

    使用alarm(2)和pause(2)完成sleep功能

    #include<stdio.h>
    #include<signal.h>
    #include<unistd.h>
    void doit(int n){
        
        return ;
    }
    unsigned int mysleep(unsigned int seconds){
        signal(SIGALRM,doit);
        //设置闹钟
        unsigned int l=alarm(seconds);
        //暂停
        pause();
        return l;
         
    }
    int main(void){  
        mysleep(4);
        printf("pause after...
    ");
        return 0;
    } 

    三、信号传送过程处理

         

  • 相关阅读:
    anaconda安装TensorFlow
    复习NLP-实战(三)
    复习NLP-实战(二)
    复习NLP-实战(一)
    python爬虫实战
    WebSocket实战(一)
    不上传图片直接本地预览
    oracle导出
    使用正则表达式验证学习成绩分数
    限制文本框,文本域输入的字符数量
  • 原文地址:https://www.cnblogs.com/ptfe/p/11024222.html
Copyright © 2020-2023  润新知