信号通讯

一。核心理论

  1.信号处理流程

    内核->选择信号->发送信号->进程B->处理信号

  2.信号类型

    Linux系统支持的所有信号均定义在/usr/include/asm/signal.h,其中常见的信号时

    SIGKLL: 杀死进程

    SIGSTOP:暂停进程

    SIGCHLD:子进程停止或结束时用来通知父进程

二。函数学习

  1.发送信号   

    函数名:     kill

    函数原型:    intkill(pid_t pid,int sig)

    函数功能:    向进程发送信号

    所属头文件: <sys/types.h><signal.h>  

    返回值:    成功时:返回0

            失败时:返回-1

    参数说明:   pid : pid > 0 ,pid参数指向接受信号的进程

            sig : 指明要发送的信号

  2.处理信号    

    函数名:    signal

    函数原型:   typedef void(*sighandler_t)(int)

           sighandler_t signal(int signum,sighandler_t handler)

    函数功能:  设置信号的处理方式

    所属头文件:  <signal.h> 

    返回值:     成功时 :返回处理函数的指针

           失败时 :返回SIG_ERR

    参数说明:   signum : 要处理的信号

            handler: 对应信号的处理方式

            SIG_IGN:忽视这个信号(不处理)

            SIG_DFL:交给内核来处理

           用户自定义方式:交给用户自定义的方式来处理

  3.用户自定义方式

    1.发送信号 kill -n SIGINT pid 

           pid 是指向接受信号的进程号。(ps aux 查看一下这个命令)

    2.kill 发送函数

        ./aprocee pid 

           pid 是指向接受信号的进程号。(ps aux 查看一下这个命令)

posted @ 2015-11-08 16:42  吕晓宁  阅读(164)  评论(0编辑  收藏  举报