Linux进程通信之进程信号
发布时间:2022-12-21 11:02:40 所属栏目:Unix 来源:
导读: 一、信号的概念:
信号机制是Linux最基本的通讯机制,它可以用来向一个或者多个进程发送异步事件信息,传送少量信息。信号是一个软件中断unix进程通信,并且是一个“软中断”(只是告诉有这样
信号机制是Linux最基本的通讯机制,它可以用来向一个或者多个进程发送异步事件信息,传送少量信息。信号是一个软件中断unix进程通信,并且是一个“软中断”(只是告诉有这样
|
一、信号的概念: 信号机制是Linux最基本的通讯机制,它可以用来向一个或者多个进程发送异步事件信息,传送少量信息。信号是一个软件中断unix进程通信,并且是一个“软中断”(只是告诉有这样一个信号,但这个信号具体如何进行处理、什么时候处理,都是由进程决定的,所以是软中断) 二、信号的产生: 硬件产生: “ctrl+c ”:2号信号;“ctrl+z”:20号信号;“ctrl+|”:3号信号 软件产生: kill函数: int kill(pid_t pid,int sig) 参数: pid:要操作的进程号;sig:具体信号 给pid进程发送sig信号 eg:kill(getipd(),2) raise函数 int raise(int sig) 参数:sig:具体信号类型 谁调用给谁发信号 三、信号的种类: Linux系统中定义了一些列的信号类型,这些信号可以由内核或者系统中的其他具有设当权限的进程产生,对于收到信号的进程,其task_struct结构体中的signal属性的某一位置位,使用kill-l命令可以列出所有已经定义的信号: 非可靠信号:(非实时信号) 1~31 :可能会丢失信号 可靠信号:(实时信号) 34~64:一定不会丢失的信号 总共有62个信号。 四、信号的处理方式: 操作系统对信号的处理方式(man 7 signal中查看) term、core、cont、ign、stop 默认的处理方式:SIG_DFL,操作系统当中已经定义好了信号的处理方式了 忽略处理方式为:SIG_IGN ,该信号为忽略处理(子进程退出时给父进程发送的信号SIGHLD,其处理方式为忽略处理,所以父进程忽略处理,没有回收其退出状态信息,导致子进程成为僵尸进程) 自定义的处理方式:程序员可以更改信号的处理方式,定义一个函数,当进程收到该信号时,调用自定义的函数 五、信号的注册: 概念:一个进程收到了一个信号,这个过程称之为注册,信号的注册和注销是两个独立的过程 内核中信号注册位图以及sigqueue队列的了解: 注册位图、sigqueue都是进程当中的内容,每一个进程都有自己独有的注册位图和sigque (编辑:我爱资讯网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
