zoukankan      html  css  js  c++  java
  • 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;
    } 

    三、信号传送过程处理

         

  • 相关阅读:
    Win32汇编对话框资源的综合应用
    linux下svn服务器搭建以及相关问题解决方案
    a+++b 在编译基础上的讨论
    BHO API HOOK Wininet基于IE编程的一些资料
    二维数组和二级指针
    深信服电话面试
    C和C++中的void*
    MySQL学习笔记:调用存储过程或函数报1418错误
    MySQL学习笔记:limit
    MySQL学习笔记:时间差
  • 原文地址:https://www.cnblogs.com/ptfe/p/11024222.html
Copyright © 2011-2022 走看看