zoukankan      html  css  js  c++  java
  • 第13课-信号通讯

    1.信号:在Linux中信号也是最为古老的通信机制
    2.信号处理流程:
    (1)选择信号
    (2)发送信号
    (3)处理信号

    3.信号类型:

    (1)SIGHUP:终端发出的结束信号
    (2)SIGINT:键盘中断信号
    (3)SIGKILL:结束接收信号的进程(杀死进程)
    (4)SIGTERM:kill命令发出的信号
    (5)SIGSTOP:暂停进程
    (6)SIGCHLD:子进程停止或结束的时候用来通知父进程
    4.忽略信号:有些信号可以被忽略,但是SIGKILL和SIGSTOP不可忽略,他们是要终止和停止进程。
    5.执行用户希望的操作:内核响应信号的时候调用相应的用户函数。
    6.执行默认操作:大多是终止进程
    7.函数学习

    6.1 发送信号

    6.1.1 函数名
    Kill
    6.1.2 函数原形
    int kill(pid_t pid, int sig);
    6.1.3 函数功能
    向进程发送信号
    6.1.4 所属头文件
    <sys/types.h>
    <signal.h>
    6.1.5 返回值
    成功:返回0
    失败:-1
    6.1.6 参数说明
    Pid大于0的时候指向接收信号的进程
    sig指明要发送的信号(上述信号类型)

    6.2 处理信号

    6.2.1 函数名
    Signal
    6.2.2 函数原形
    typedef void (*sighandler_t)(int);
    sighandler_t signal(int signum, sighandler_t handler);
    6.2.3 函数功能
    设置信号的处理方式(处理函数)
    6.2.4 所属头文件
    <signal.h>
    6.2.5 返回值
    成功:返回处理函数的指针
    失败:SIG_ERR
    6.2.6 参数说明
    Signum指定要处理的信号
    Handler处理信号的函数指针。可以取值:SIG_IGN,SIG_DFL,具体函数名


    8.补充:
    (1)kill函数式自己对自己或者自己对别人都可以,但是raise函数只能自己对自己发信号。
    (2)kill函数的pid:
    --》大于0:发送给PID指定的进程
    --》等于0:发送给同组进程
    --》小于0:发送给同进程组ID为|PID|的进程
    --》等于-1:发送给所有进程


    (3)raise原型:
    int raise(int sign0)


    (4)pause函数:使进程挂起,直到捕捉到信号,只有执行了一个信号处理函数以后,才会结束挂起。


    (5)atoi(char * str)将字符串转换为整数。




    9.接收信号的进程
    (1)设置信号处理方式
    (2)等待信号接收(信号捕捉),要用到PAUSE函数




    10.发送进程:发送进程

  • 相关阅读:
    1040 最大公约数之和(欧拉函数)
    1028 大数乘法 V2(FFT or py)
    1020 逆序排列(DP)
    1837 砝码称重
    1070 Bash游戏 V4
    1280 前缀后缀集合(map)
    1390 游戏得分(贪心)
    1179 最大的最大公约数
    1400 序列分解(dfs)
    1420 数袋鼠好有趣(贪心二分)
  • 原文地址:https://www.cnblogs.com/YanfeiHao/p/4433011.html
Copyright © 2011-2022 走看看