使用kill()函数向进程发送信号

本片文章的学习记录总结来源于:https://www.bilibili.com/cheese/play/ep182660?csource=common_hp_history_null&t=11&spm_id_from=333.1007.top_right_bar_window_history.content.click

通常在Linux系统中,可以使用 kill or killall 命令向指定的进程发送信号,以让其执行某种操作。在程序中,也可以使用kill()函数向指定进程发送信号。若使用kill()函数,则需要包含以下头文件,以及kill()函数声明如下。

功能:kill函数将信号sig发送给进程编号为pid的进程;

返回值:成功,返回0;失败,返回-1;

kill函数第一个形参 pid 有三种情况:

a. pid 大于0 :将信号发送给 进程编号为 pid 的进程;

b. pid 等于0 :将信号发送给与当前进程相同进程组的所有进程,常用于父进程向子进程发送信号(注意,此情况下发送者自己也会收到该信号

c. pid 等于-1 :将信号广播给系统内所有进程(此情况不常用)

知识点:在多进程的服务程序中,如果子进程收到退出信号,则子进程自行退出;如果父进程收到退出信号,则父进程先向所有子进程发送退出信号,然后再自己退出

下面图片的代码逻辑比较简单,大致就是 父进程每隔5秒产生一个子进程,所有子进程每隔3秒打印一次运行信息;

如果子进程收到 SIGTERM 信号,则自行退出,并打印退出信息以及中断信号

如果父进程收到 SIGTERM / SIGINT 信号,则先向子进程发送 SIGTERM 退出信号,然后再自己退出

查看 demo 进程,发现已经产生了很多demo子进程,如果使用 kill 2871808 ,则该子进程退出,并打印中断信号为 15

如果想要所有进程都退出,则只需要kill 掉父进程就可以了, e.g: kill 2871575 , 则所有进程都退出,并打印中断信号 15

如果在运行窗口按下 Ctrl+c,则父进程收到信号2退出,所有子进程收到父进程发送的信号15退出

以上就是关于 使用 kill() 函数向进程发送信号的基本操作处理方法,共勉。

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值