加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱资讯网 (https://www.52junxun.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

Linux进程通信之进程信号

发布时间:2022-12-21 11:02:40 所属栏目: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
 
 
 

(编辑:我爱资讯网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章