进程间通信的信号问题分析

描述

  信号在进程间通信里面应该是使用场景最多的一个。

  平时我们在终端里面用的 CTRL C 结束进程或者CTRL Z 暂停进程,都属于信号的一种。

  Linux里面信号有60多个,分为标准信号和实时信号,编号从1到31,34到64。不同的内核版本略有区别。

  发送信号一般用 kill 指令,比如启动一个进程,先查到进程的 ID 号,然后使用 kill -2 加上进程号就能结束进程。其中,-2 表示 SIGINT 信号,这个宏在 signal.h 头文件里面有定义。使用这些信号的时候,既可以用宏定义,又可以用编号。

  结束一个进程,很多时候会选择 kill -9 ,为什么选择 9 这个信号,因为这个信号比较特殊,所有进程都不能忽略它。

  kill不仅是命令,还是一个函数,用法和命令差不多也是提供进程号,加上要发送的信号值,收到信号的进程默认动作是结束。不过也可以通过 signal 或者 sigaction 来指定处理方法,可以是忽略当前信号,也可以执行指定的函数。

  审核编辑:黄飞

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分