zoukankan      html  css  js  c++  java
  • 第39天-进程 _1(2013.09.11)

      1.信号的三种响应方式 ; 忽略, 默认响应, 自定义

      2.信号相对于进程的控制流程来说是异步的。

      3.使用kill -l 查看系统定义的信号列表

          1-33 不支持排队  34-64支持排队

          例 ;  Ctrl-C产生SIGINT信号, Ctrl-产生SIGQUIT信号, Ctrl-Z产生 SIGTSTP 信号(可使前台进程停止)

      4.SIGQUIT的默认处理动作是终止进程并且Core Dump

          ulimit -c 1024  : 允许core文件爱女最大为1024K

      5.kill命令是调用kill函数实现的。

      6.kill函数的作用 ; 可以给一个指定的进程发送指定的信号

       raise 函数 : 可以给当前进程发送指定的信号。

        函数原型 : #include <signal.h>

              int kill(pid_t pid, int signo);

              int raise(int signo);

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

          signo 为那几个数的几种情况 : 

                      0 : 杀死本组进程

                      -1 :杀死除init之外的所有进程

                      >= 1 : 杀死某个进程

                      -10 : 杀死组号为10的进程

      7. abort函数使当前进程接受到SIGABRT信号而异常终止

        函数原型: #include <stdlib.h>

              void abort(void);

        返回值 : 总是会成功,所以么有返回值

      8.alarm()函数和SIGALRM信号

          函数原型 : #include <unistd.h>

                unsigned int alarm(unsigned int seconds);

          调用alarm函数可以设定一个闹钟, 可以告诉内核在seconds 秒后给当前进程发SIGALRM 信号。该信号的默认处理动作是终止当前进程。

          如果seconds为0,表示取消以前设定的闹钟, 函数返回值仍然是以前设定的闹钟时间还余下的秒数

      9.信号递达 : 实际执行信号的处理的动作

       信号未决 : 信号从产生到递达之间的状态

      10 , 每个信号都有两个标志位分别表示阻塞和未决

      11. 信号集操作函数 : 

          sigset_t 类型对于每种信号用一个bit表示“有效”或“无效”状态

          函数原型 : #include <signal.h>

              int sigemptyset(sigset_t *set); 清零

              int sigfillset(sigset_t *set); 置1

              int sigaddset(siget_t *set, int signo);  某一位置1

              int sigdelset(sigset_t *set, int signo);  某一位清零

              int sigismemeber(const sigset_t *set, int signo);  判断某一位是否为1

      12. 调用 sigprocmask : 读取或更改进程屏蔽字

          函数原型 : #include <signal.h>

                int sigprocmask(int how, const sigset_t *set, sigset_t *oset);

          返回值 : 成功为 0, 失败为 -1

          若oset非空指针, 则读取进程的当前信号屏蔽信号通过oset参数传出

          若set非空指针, 则更改进程的信号屏蔽字。

          若两者都非空 , 先将原来的信号屏蔽备份到oset里, 然后根据set和how参数更改信号屏蔽字。

          how :

              SIG_BLOCK : set包含了我们希望添加到当前信号屏蔽字的信号

              SIG_UNBLOCK : set包含了从当前信号屏蔽字着中解除阻塞的信号。

              SIG_SETMASK : 设置当前信号屏蔽字位set所指向的值。

      13.函数原型 : #include <signal.h>

              int sigpending(sigset_t *set);

          sigpending读取当前进程的未决信号集, 通过set参数传出。

          成功返回0, 失败返回-1

      

  • 相关阅读:
    Structured Streaming watermark总结
    技术实践第三期|HashTag在Redis集群环境下的使用
    元宇宙带来沉浸式智能登录?你学会了吗?
    技术实践第一期|友盟+开发者平台Node.js重构之路
    2021年度友盟+ APP消息推送白皮书:工作日68点通勤时间消息送达率每日最高
    技术实践第二期|Flutter异常捕获
    注意啦!还没有支持64位系统的App开发者,务必在12月底前完成这件事!
    一位大牛对于写技术博客的一些建议
    国内常用源开发环境换源(flutter换源,python换源,Linux换源,npm换源)
    初识Socket通讯编程(一)
  • 原文地址:https://www.cnblogs.com/cxw825873709/p/3315027.html
Copyright © 2011-2022 走看看