• Linux 信号集 及其 部分函数


    这几个函数都是对自己自定义的信号集操作

    int sigemptyset(sigset_t *set)

    功能:清空信号集中的数据,将所有的标志位置为0

    参数:set需要操作的信号集

    返回值:成功0失败-1

    int sigfillset(sigset_t *set)

    功能:清空信号集中的数据,将所有的标志位置为1

    参数:set需要操作的信号集

    返回值:成功0失败-1

    int sigaddset(sigset_t *set, int signum)

    功能:设置信号集的某个标志位为1,阻塞这个信号

    参数:set需要操作的信号集

               signum:需要阻塞的那个信号

    返回值:成功0失败-1

    int sigdelset(sigset_t *set, int signum)

    功能:设置信号集的某个标志位为0,不阻塞这个信号

    参数:set需要操作的信号集

               signum:需要不阻塞的那个信号

    返回值:成功0失败-1

    int sigismember(const  sigset_t *set, int signum)

    功能:某个信号是否堵塞

    参数:set需要操作的信号集

               signum:需要判断的那个信号

    返回值:1:signum堵塞   0:不堵塞

    对系统的信号集进行操作只能通过下面的函数操作

    int sigprocmask(int how, const sigset_t, sigset_t* oldset);

    功能:将自定义信号集中的信号设置到内核中(设置阻塞,解除阻塞,替换)

    参数:

            -how:如何对内核阻塞信号集处理

                    -SIG_BLOCK:将用户设置的阻塞信号添加到内核中,内核原来的数据被1替换

                                    假设内核中的阻塞信号集是mask   mask | set 就把1传递过去了

                    -SIG_UNBLOCK:根据用户设置的数据,对内核中的数据进行解除阻塞

                                     mask &= ~set

                    -SIG_SETMASK:覆盖原来的信号集

            -set:已经初始化好的自定义信号集

            -oldset:保存设置之前的内核中的阻塞信号集的状态

    返回值:成功0失败-1

    int sigpending(sigset_t * set)

    功能:获取内核中的未决信号集

    参数:set保存的是内核中的未决信号集的信息

    1. #include
    2. #include
    3. #include
    4. #include
    5. int main() {
    6. sigset_t set;
    7. sigemptyset(&set);
    8. sigaddset(&set, SIGINT);
    9. sigaddset(&set, SIGQUIT);
    10. sigprocmask(SIG_BLOCK, &set, NULL);
    11. while (1)
    12. {
    13. sigset_t pendingset;
    14. sigemptyset(&pendingset);
    15. sigpending(&pendingset);
    16. for(int i = 1; i <= 32; i++) {
    17. if(sigismember(&pendingset, i) == 1) {
    18. printf("1");
    19. } else if(sigismember(&pendingset, i) == 0) {
    20. printf("0");
    21. }else{
    22. perror("sigismember");
    23. return 0;
    24. }
    25. }
    26. printf("\n");
    27. }
    28. return 0;
    29. }

  • 相关阅读:
    Python基于OpenCV的视频车道线检测系统[源码&部署教程]
    微信小程序将后端返回的图片文件流解析显示到页面
    Linux 文件创建、查看
    maven中clean,compile,test,package,install分别有什么作用
    C# 控制台应用模板可生成顶级语句
    16 “count(*)“ 和 “count(1)“ 和 “count(field1)“ 的差异
    k8s StatefulSet
    git学习笔记
    Python中property属性、with语句及上下文管理器使用方法代码
    yyds!这个写文案神器爱了爱了
  • 原文地址:https://blog.csdn.net/weixin_44273624/article/details/132996384