• [学习笔记]可靠信号与不可靠信号编程实践


    可靠信号、不可靠性信号的观察

    综合案例

    1、  创建子进程和父进程

    2、  注册SIGINT非实时信号  SIGRTMIN 实时信号 添加到到进程阻塞中

    3、  注册用户自定义信号SIGUSR1

    4、  子进程发送3次非实时信号,发3次实时信号

    5、  子进程发送 SIGUSR1解除信号阻塞;

    6、  观察实时信号和非实时信号的表现与区别!

    7、   

    man手册sigaction中

                  struct sigaction {

                      void (*sa_handler)(int);

                      void (*sa_sigaction)(int, siginfo_t *, void *);

                      sigset_t sa_mask;

                      int sa_flags;

                      void (*sa_restorer)(void);

                  }

    flags关键字选项很多,能让sigaction函数很强大。。。。

    请你仔细阅读man手册看flags意思

    三种睡眠函数

    q  unsigned int sleep(unsigned int seconds); 秒

    若被中断打断,返回剩余时间

    q  int usleep(useconds_t usec); 微妙

    若被中断打断,返回剩余时间 

    q  int nanosleep(const struct timespec *req, struct timespec *rem);纳秒时间

    要睡眠的时间req;剩余睡眠时间,如果要中断,通过rem返回过来。

    三种时间结构

    time_t  秒

    struct timeval {

             long    tv_sec;         /* seconds */

             long    tv_usec;        /* microseconds */微妙

    };

    struct timespec { 纳秒

             time_t tv_sec;        /* seconds */

             long   tv_nsec;       /* nanoseconds */

    };

    setitime函数: 间隙性产生

    q  包含头文件<sys/time.h>

    q  功能setitimer()比alarm功能强大,支持3种类型的定时器

    q  原型:

    int setitimer(int which, const struct itimerval *value, struct itimerval *ovalue));

    q  参数

    q  第一个参数which指定定时器类型

    q  第二个参数是结构itimerval的一个实例,结构itimerval形式

    q  第三个参数可不做处理。

    q  返回值:成功返回0失败返回-1

    q  ITIMER_REAL:经过指定的时间后,内核将发送SIGALRM信号给本进程

    q  ITIMER_VIRTUAL :程序在用户空间执行指定的时间后,内核将发送SIGVTALRM信号给本进程

    q  ITIMER_PROF :进程在内核空间中执行时,时间计数会减少,通常与ITIMER_VIRTUAL共用,代表进程在用户空间与内核空间中运行指定时间后,内核将发送SIGPROF信号给本进程。

    思考why ITIMER_PROF存在?

    (备注:一般指cpu运行时间,比如,cpu在运行一段时间后,产生信号给本进程。。。。可见,是需要这样的信号)。

  • 相关阅读:
    简单的模板解析函数
    HTML通过事件传递参数到js 二 event
    HTML通过事件传递参数到js一
    通过this获取当前点击选项相关数据
    LeetCode 20. 有效的括号(Valid Parentheses)
    LeetCode 459. 重复的子字符串(Repeated Substring Pattern)
    LeetCode 14. 最长公共前缀(Longest Common Prefix)
    LeetCode 168. Excel表列名称(Excel Sheet Column Title)
    LeetCode 171. Excel表列序号(Excel Sheet Column Number) 22
    LeetCode 665. 非递减数列(Non-decreasing Array)
  • 原文地址:https://www.cnblogs.com/shichuan/p/4448069.html
Copyright © 2020-2023  润新知