使用信号集,验证可靠信号挨个排队响应和不可靠信号会丢失的特点

简介: 使用信号集,验证可靠信号挨个排队响应和不可靠信号会丢失的特点

可靠信号:(34-64)如果多个进程同时给一个进程发信号,会排队,依次从大到小依次响应。(没有默认触发机制)

不可靠信号(1-31)会丢失

验证代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <unistd.h>
#include <errno.h>
#include <signal.h>

void Signal_Task1(int num)  //输出不可靠信号
{
    printf("%d\n", num);
}

void Signal_Task2(int num)  //输出可靠信号
{

    printf("%d\n", num);
    if (num == 34)
    {
        printf("------------------可靠信号------------\n");
    }
}
int main()
{
    sigset_t sig_set;
    //清空信号集
    int sigemptyset_ret = sigemptyset(&sig_set);
    if (sigemptyset_ret == -1)
    {
        perror("sigemptyset");
        exit(-1);
    }
    else
    {
        printf("清空信号集成功!\n");
    }
    //将不可靠信号添加到信号集中
    for (int i = 1; i <= 31; i++)
    {
        if (i == 9 || i == 19)
            continue;
        signal(i, Signal_Task1);
        sigaddset(&sig_set, i);
        //设置信号集堵塞
        sigprocmask(SIG_BLOCK, &sig_set, NULL);
        raise(i); //自己调用自己
    }
    //将可靠信号添加到信号集中
    for (int i = 34; i <= 64; i++)
    {

        signal(i, Signal_Task2);
        sigaddset(&sig_set, i);
        //设置信号集堵塞
        sigprocmask(SIG_BLOCK, &sig_set, NULL);
        raise(i);
    }
    //信号集解除阻塞
    int unsigprocmask_ret = sigprocmask(SIG_UNBLOCK, &sig_set, NULL);
    if (unsigprocmask_ret == -1)
    {
        perror("sigprocmask");
        exit(-1);
    }
    else
    {
        printf("解除信号堵塞成功\n");
    }
    while (1)
    {
        sleep(1);
    }
    return 0;
}
相关文章
|
26天前
|
缓存
计算机网络——数据链路层-可靠传输的实现机制:回退N帧协议GBN(无差错情况、累积确认、有差错情况、发送窗口尺寸)
计算机网络——数据链路层-可靠传输的实现机制:回退N帧协议GBN(无差错情况、累积确认、有差错情况、发送窗口尺寸)
17 0
计算机网络——数据链路层-可靠传输的实现机制:回退N帧协议GBN(无差错情况、累积确认、有差错情况、发送窗口尺寸)
|
26天前
|
缓存 网络架构
计算机网络——数据链路层-可靠传输的实现机制:停止-等待协议SW(确认与否认、超时重传等,信道利用率及相关练习题)
计算机网络——数据链路层-可靠传输的实现机制:停止-等待协议SW(确认与否认、超时重传等,信道利用率及相关练习题)
45 0
|
2月前
|
缓存
流量控制&可靠传输机制&停止-等待协议
流量控制&可靠传输机制&停止-等待协议
34 0
|
2月前
|
存储 Unix Linux
Linux系统编程(传统信号和实时信号)
Linux系统编程(传统信号和实时信号)
43 0
|
2月前
无线通信中的重传机制是如何工作的?
无线通信中的重传机制是如何工作的?
113 0
|
2月前
无线通信中,Ack信号通常如何使用?
无线通信中,Ack信号通常如何使用?
91 0
|
2月前
无线通信中重传机制的策略有哪些?
无线通信中重传机制的策略有哪些?
86 0
带你读《5G 系统技术原理与实现》——3.5 5G 物理信道和信号
带你读《5G 系统技术原理与实现》——3.5 5G 物理信道和信号
|
存储 Java
Choreographer响应Vsync信号流程
Choreographer响应Vsync信号流程
134 0
Choreographer响应Vsync信号流程
|
SQL
【计算机网络】数据链路层 : 停止-等待协议 ( 无差错情况 | 有差错情况 | 帧丢失 | 帧出错 | ACK 确认帧丢失 | ACK 确认帧延迟 | 信道利用率公式 | 信道利用率计算 )★(二)
【计算机网络】数据链路层 : 停止-等待协议 ( 无差错情况 | 有差错情况 | 帧丢失 | 帧出错 | ACK 确认帧丢失 | ACK 确认帧延迟 | 信道利用率公式 | 信道利用率计算 )★(二)
303 0