zoukankan      html  css  js  c++  java
  • signal——信号集

    1.信号集
      每个进程都有一个信号屏蔽字,它规定了当前要阻塞递送到该进程的信号集。对于每种可能的信号,该屏蔽字中都有一bit位与之对应。信号数可能会超过一个整型数所包含的二进制位数,因此POSIX.1定义了一个新数据类型sigset_t,它包括一个信号集
      int sigempytset(sigset_t *set)  初始化set指向的信号集,清除其中的所有信号
      int sigfillset(sigset_t *set)   初始化set指向的信号集,其中包含所有信号
      int sigaddset(sigset_t *set,int signo);//向set中添加一个signo信号
      int sigdelset(sigset_t *set,int signo);
      以上均成功返回0 出错返回-1
     
      测试某个信号是否被设置在信号集中
      int sigismember(sigset_t *set,int signo) 为真返回1 为假返回0   出错返回-1

    2.sigprocmask ()   函数检测或更改进程的屏蔽字
      int sigprocmask(int flag,const sigset_t *set,sigset_t *oldset);
      若set非空指针,则按照flag方式进行设置新的信号屏蔽字
    SIG_BLOCK : 取当前进程的屏蔽字与set的并集   <不影响其它基础上 设置屏蔽>
    SIG_UNBLOCK:取当前进程的屏蔽字与set的补集 的交集  <不影响其它基础上  解除屏蔽>
    SIG_SETMASK:直接设置

    3.int sigsuspend(sigset_t *mask)
      把进程信号屏蔽字设成为mask并原子的阻塞等侍一个某信号从捕捉函数返回

    4.int sigaction(int how,const sigset_t *act,sigset_t *oldact );
       改变一个信号的行为

    5.int raise(int signo);  给自身发送一个信号
       int kill(pid_t pid,int signo)
       
       .pid > 0  将信号发送给进程ID为pid的进程。
       .pid == 0 将信号发送给与发送信号进程同一组的进程,而且发送进程有许可权向其发送信号的权限。
                 这里用的术语“所有进程”不包括实现定义的系统进程集(包括内核进程以及init)
       .pid < 0  将信号发送给其进程组gid等于pid绝对值的进程,而且发送进程有许可权向其发送信号的权限
       .pid ==-1 将信号发送给发送进程有权限对其发送信号的系统上的所有进程(不包括系统进程集)

  • 相关阅读:
    Docker镜像仓库的搭建--> Harbor篇
    K8S入门系列之扩展组件 --> Dashboard (五)
    K8S入门系列之必备扩展组件--> coredns(四)
    K8S入门系列之集群二进制部署--> node篇(三)
    K8S入门系列之集群二进制部署--> master篇(二)
    K8S入门系列之集群yum安装-->初试篇(一)
    zabbix 4.2 的安装和设置(mysql57----centos7)
    SVN--服务端安装和设置---centos7
    Docker(二) Dockerfile 使用介绍
    二叉搜索树JavaScript实现
  • 原文地址:https://www.cnblogs.com/edan/p/8934559.html
Copyright © 2011-2022 走看看