信号

作者: 活出好样 | 来源:发表于2021-11-28 13:34 被阅读0次

信号

可靠信号和不可靠信号

不可靠信号会丢失,也就是说连续发送四个信号2给某个进程去处理,他可能会只处理三个以下信号。
1-32 不可靠信号
34-.... 可靠信号

signal

signal函数,处理两个信号时,第一个信号会被中断,完成该信号之后再回去处理被中断的信号,但如果是处理相同的信号的话,不会中断,而是会排队阻塞,一个个执行。


信号排队阻塞
/*测试进程发送信号给另一个进程*/
#include"process.h"
void func(int sig)
{
    if(sig==SIGINT)
        for(int i=0;i<5;i++){
            printf("i catch the %d\n",sig);
            sleep(1);
        }
    if(sig==15)
        for(int i=0;i<5;i++){
            printf("i catch the %d\n",sig);
            sleep(1);
        }
}
int main()
{
    pid_t pid=Fork();
    if(pid==0){
        signal(SIGINT,func);
        signal(15,func);
        while(1)
        {
            printf("i am ing\n");
            sleep(1);
        }       
    }
    else{
        //sleep(5);
        //kill(pid,SIGINT);
    }
    return 0;
}
image-20211128115802103.png

信号阻塞

信号集

相当于一个数组,里面都是信号

       #include <signal.h>
       int sigemptyset(sigset_t *set);
    清空信号集
       int sigfillset(sigset_t *set);
    把所有信号都加入信号集
       int sigaddset(sigset_t *set, int signum);
    //把参数一信号加入信号集
       int sigdelset(sigset_t *set, int signum);
    从信号集中删除一个信号
       int sigismember(const sigset_t *set, int signum);
       判断某信号在不在这个信号集中
image-20211128123745823.png

signal处理函数func 对2,15进行处理

当i<20的时候,对15信号进行了阻塞处理,这样即使如下连续发送信号,也不会对15信号进行处理,只有当i>20,对15信号进行非阻塞处理后。15信号才会被处理

kill 2 该进程
kill -15 该进程
image-20211128124214761.png

功能更为强大的sigaction

       int sigaction(int signum, const struct sigaction *act,struct sigaction *oldact);

               struct sigaction {
               void     (*sa_handler)(int);
               void     (*sa_sigaction)(int, siginfo_t *, void *);
               sigset_t   sa_mask;
               int        sa_flags;
               void     (*sa_restorer)(void);
           };
image-20211128124554962.png

阻塞一个信号


image-20211128125319837.png

相关文章

  • 信号种类

    信号种类 信号分为可靠信号与不可靠信号,可靠信号又称为实时信号,非可靠信号又称为非实时信号。 不可靠信号 信号代码...

  • RAC的冷信号和热信号

    冷信号和热信号 什么是冷信号与热信号? Signal vs Subject 冷信号 -> 热信号 冷信号与热信号的...

  • 心理学手记--压力的预警信号

    心理信号 情绪信号 精神信号 行为信号

  • 信号与系统

    信号与系统 whye 信号 信号的分类 确定信号与不确定信号 确定信号 可以用函数表示的信号 不确定信号 不能用确...

  • 第一章信号与系统

    信号的分类 1.确定信号与随机信号 确定信号:信号可以用一个确定的时间函数表示随机信号:不满足确定信号定义的信号 ...

  • RAC学习之二

    RACSignal(信号)介绍: 核心思想:创建信号、订阅信号、发送信号 1、创建信号及发送信号 类方法创建RAC...

  • 03_读书笔记_RAC中的RACSubject

    RACSubject :信号提供者,自己可以充当信号,又能够发送信号 基本使用 过程分析 创建信号 订阅信号 发送信号

  • APUE信号

    第10章 信号 信号是软件中断 信号提供了一种处理异步事件的方法 10.2 信号概念 信号都以SIG开头 信号名都...

  • 得到专栏学习 3-29

    关键字:信号和反信号库克 加里·哈默尔 1.信号和反信号信号 和 反信号 是经济学概念,所谓信号,就是你做一些事情...

  • iOS_RAC进阶学习

    一、信号合并 (1)信号合并_Merge (2)信号合并_CombineLatest (3)信号合并_concat...

网友评论

      本文标题:信号

      本文链接:https://www.haomeiwen.com/subject/nmncxrtx.html