kill函数在某些情况下是不是不能执行完?

um_java 2012-04-09 11:21:28
kill向进程发送信号,如果该信号是不被阻塞的,则在kill返回前该信号就被传送给了这个进程。如果对这个信号的处理方式是SIG_IGN,并且SIG_IGN终止该进程,那么对这个信号处理完进程就终止了(在kill返回之前),kill是不是就不能执行完了?
...全文
317 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljhhh0123 2012-04-09
  • 打赏
  • 举报
回复
kill是把信号放入指定进程的消息队列,就返回的。
SIG_IGN的意思是忽略该信号。但有些信号是不能忽略也不能改变处理方式的。
具体参见《unix环境高级编程》
ljhhh0123 2012-04-09
  • 打赏
  • 举报
回复
kill是把信号放入指定进程的消息队列,就返回的。
SIG_IGN的意思是实力该信号。但有些信号是不能忽略也不能改变处理方式的。
具体参见《unix环境高级编程》
justkk 2012-04-09
  • 打赏
  • 举报
回复
SIG_IGN 还能终止进程??

信号是异步的,kill不会依赖于接收信号的进程的处理
面包大师 2012-04-09
  • 打赏
  • 举报
回复
应该不会
justkk 2012-04-09
  • 打赏
  • 举报
回复
你说的这个情况,这时kill还没有返回
um_java 2012-04-09
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

这还有什么纠结的,进程都死了,还管函数调用的返回吗

像你这么纠结,那进程死了,main函数还怎么返回?
[/Quote]
我的意思就是这种情况kill实际没有执行完,是不?。。
justkk 2012-04-09
  • 打赏
  • 举报
回复
这还有什么纠结的,进程都死了,还管函数调用的返回吗

像你这么纠结,那进程死了,main函数还怎么返回?
justkk 2012-04-09
  • 打赏
  • 举报
回复
apue 中的原文是这样的

If the call to kill causes the signal to be generated for the calling process and if the signal is not blocked, either signo or some other pending, unblocked signal is delivered to the process before kill returns.

说的是给自己发信号的情况。
um_java 2012-04-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

SIG_IGN 还能终止进程??

信号是异步的,kill不会依赖于接收信号的进程的处理
[/Quote]
我纠结的地方是APUE上说kill返回之前,这个信号就会传送给接受进程,然后kill返回。
那么对于“假设进程发送信号给自己,这个信号的默认处理方式是终止该进程”这种情况,kill返回前给当前进程发送了一个信号,然后执行默认处理方式:进程终止,进程都终止了kill还怎么返回?
um_java 2012-04-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

SIG_IGN 还能终止进程??

信号是异步的,kill不会依赖于接收信号的进程的处理
[/Quote]不好意思啊,,打错了,是SIG_DFL,就是如果某些信号的默认处理方式是终止进程,那么执行完信号处理程序信号就终止了,kill函数不是要等信号传送了之后才返回吗?这个时候进程终止了,kill还能执行返回吗?
um_java 2012-04-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

SIG_IGN 还能终止进程??

信号是异步的,kill不会依赖于接收信号的进程的处理
[/Quote]不好意思啊,,打错了,是SIG_DFL,就是如果某些信号的默认处理方式是终止进程,那么执行完信号处理程序信号就终止了,kill函数不是要等信号传送了之后才返回吗?这个时候进程终止了,kill还能执行返回吗?

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧