• 第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.发送进程:发送进程

  • 相关阅读:
    经典哦,男女3.8,8.3
    在web窗体设计器中未能加载该文件
    使用客户端脚本
    C#的数据类型
    实验下cookie
    C#中Split分隔字符串的应用
    未将对象引用设置到对象的实例
    System.StackOverflowException 的异常;jit调试失败
    DataGrid中添加删除确认对话框 多种实现
    常用正则表达式
  • 原文地址:https://www.cnblogs.com/YanfeiHao/p/4433011.html
Copyright © 2020-2023  润新知