社区
C语言
帖子详情
kill函数在某些情况下是不是不能执行完?
um_java
2012-04-09 11:21:28
kill向进程发送信号,如果该信号是不被阻塞的,则在kill
返回前
该信号就被传送给了这个进程。如果对这个信号的处理方式是SIG_IGN,并且SIG_IGN终止该进程,那么对这个信号处理完进程就终止了(在kill返回之前),kill是不是就不能执行完了?
...全文
317
11
打赏
收藏
kill函数在某些情况下是不是不能执行完?
kill向进程发送信号,如果该信号是不被阻塞的,则在kill返回前该信号就被传送给了这个进程。如果对这个信号的处理方式是SIG_IGN,并且SIG_IGN终止该进程,那么对这个信号处理完进程就终止了(在kill返回之前),kill是不是就不能执行完了?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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还能执行返回吗?
linux下
kill
命令,
kill
函数
kill
命令是使跟在它后面的进程结束,学习了信号我们知道,它应该是给进程发送了让进程结束的信号才能
完
成这一功能。 如何给进程发送信号呢。这里就要用到
kill
函数
; 它的原型如下; int
kill
(pid_ pid,int signum); 返回值含义:成功0 失败-1 接受者 信号类型
kill
命令发送的是什么
golang的defer的理解- defer的
函数
一定会
执行
吗?
go语言中defer可以
完
成延迟功能,当前
函数
执行
完
成后再
执行
defer的代码块。通过defer,我们可以在代码中优雅的关闭/清理代码中所使用的变量。
Linux信号-----信号发送
函数
(
kill
,raise,abort)
前言: 信号发送,主要是一些
函数
可以向自己或者某些进程发送信号,已达到一种通信的作用,被接收方需要进行处理,这里具体的
函数
有几个,
kill
函数
,raise
函数
,abort
函数
,以及时钟信号
函数
,这里主要讲前三个
函数
,最后一个挪到另一篇文章。
KILL
函数
#include <sys/types.h> #include <signal.h> int
kill
(pid_t pid, int sig); 参数: pid:可能选择有以下四种 pid大于零时,pid是信号欲送往的进程的标
python线程超时
kill
_在python中使用线程的超时
函数
一个线程
不能
优雅地杀死另一个线程,因此使用当前代码,foo永远不会终止。(使用thread.daemon = True时,Python程序将在只剩下守护进程线程时退出,但这不允许您在不终止主线程的
情况
下终止foo)Some people试图使用信号来停止
执行
,但在某些
情况
下,这可能是unsafe。如果您可以修改foo,那么有许多解决方案是可能的。例如,您可以检查是否有一个threading.Eve...
程序
kill
-9与
kill
-15的区别,以及回调
函数
的作用
在Linux/unix下,中止一个Java进程有两种方式,一种是
kill
-9 pid,一种是
kill
-15 pill(默认)。 两种方式的区别是: SIGN
KILL
(9) 的效果是立即杀死进程. 该信号
不能
被阻塞, 处理和忽略。 SIGNTERM(15) 的效果是正常退出进程,退出前可以被阻塞或回调处理。并且它是Linux缺省的程序中断信号。 ---》标准中断信号
C语言
70,037
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章