信号在进程间通信里面应该是使用场景最多的一个。
平时我们在终端里面用的 CTRL C 结束进程或者CTRL Z 暂停进程,都属于信号的一种。
Linux里面信号有60多个,分为标准信号和实时信号,编号从1到31,34到64。不同的内核版本略有区别。
发送信号一般用 kill 指令,比如启动一个进程,先查到进程的 ID 号,然后使用 kill -2 加上进程号就能结束进程。其中,-2 表示 SIGINT 信号,这个宏在 signal.h 头文件里面有定义。使用这些信号的时候,既可以用宏定义,又可以用编号。
结束一个进程,很多时候会选择 kill -9 ,为什么选择 9 这个信号,因为这个信号比较特殊,所有进程都不能忽略它。
kill不仅是命令,还是一个函数,用法和命令差不多也是提供进程号,加上要发送的信号值,收到信号的进程默认动作是结束。不过也可以通过 signal 或者 sigaction 来指定处理方法,可以是忽略当前信号,也可以执行指定的函数。
审核编辑:黄飞
全部0条评论
快来发表一下你的评论吧 !