ULK(深入理解linux内核)的几个关于signal的问题!!

徐行而致--浅唱而归 2013-08-24 05:50:00
最近在看ULK(深入理解linux内核)这本书,很多不懂,有几个问题想请教下,还请大家多多指点:
1.

这里所说的致命信号是什么?是缺省情况下的内核默认执行的终止信号么?如果在信号处理函数里面发送终止信号算不算?
ULK有这么一段描述:

上面说如果信号处理函数终止了进程就不是致命信号,是不是意味着它不属于之前所说的致命信号,也就不会杀死所以应用线程???


2.

上面这段说“发送给进程1(init)的信号在捕获到他们之前总是被丢弃”,这个是不是说,对进程1只能处理有信号处理函数的这种情况,其他的像显式的忽略或者缺省操作都不会有反应???
...全文
277 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
追_逐 2013-08-30
  • 打赏
  • 举报
回复
引用 楼主 willing_heart_zx 的回复:
上面说如果信号处理函数终止了进程就不是致命信号,是不是意味着它不属于之前所说的致命信号,也就不会杀死所以应用线程???
因为是进程自己选择结束自己,并非外界的强制命令使自己结束,它可以选择继续后面的操作,或者结束自己。这个信号是该进程本身处理过的,所以它不是致命信号。
追_逐 2013-08-29
  • 打赏
  • 举报
回复
引用 1 楼 willing_heart_zx 的回复:
还想问下,上面第二个里面的致命信号是终止信号么?
你这里所说的致命信号应该是:只要能结束该进程的任何信号。 不仅仅是: SIGINT、SIGQUIT、SIGKILL这些。
  • 打赏
  • 举报
回复
引用 2 楼 qiyu1988 的回复:
进程对所接收到的信号都会有一个默认处理方式(ULK里面有介绍),如果进程不捕捉信号,有些默认处理方式是term的信号,对进程来说就是致命的。比如在终端运行一个程序,这时你按crtl+c,进程接收到了SIGINT
信号,假如进程不捕捉SIGINT,而它对SIGINT的默认处理方式是终止进程。
而init这个进程,它是其他进程的老大,只有关机命令的那些操作对它有效,类似于自杀,而其他进程别想动它一根汗毛




上面的这些函数都是向单一进程发送信号么???
qiyu1988 2013-08-26
  • 打赏
  • 举报
回复
引用 3 楼 willing_heart_zx 的回复:
[quote=引用 2 楼 qiyu1988 的回复:] 进程对所接收到的信号都会有一个默认处理方式(ULK里面有介绍),如果进程不捕捉信号,有些默认处理方式是term的信号,对进程来说就是致命的。比如在终端运行一个程序,这时你按crtl+c,进程接收到了SIGINT 信号,假如进程不捕捉SIGINT,而它对SIGINT的默认处理方式是终止进程。 而init这个进程,它是其他进程的老大,只有关机命令的那些操作对它有效,类似于自杀,而其他进程别想动它一根汗毛
上面的这些函数都是向单一进程发送信号么???[/quote] 函数的作用得看说明,有时候版本变更,函数功能说不定就变化了,当然可能性比较低就是了。
qiyu1988 2013-08-24
  • 打赏
  • 举报
回复
进程对所接收到的信号都会有一个默认处理方式(ULK里面有介绍),如果进程不捕捉信号,有些默认处理方式是term的信号,对进程来说就是致命的。比如在终端运行一个程序,这时你按crtl+c,进程接收到了SIGINT 信号,假如进程不捕捉SIGINT,而它对SIGINT的默认处理方式是终止进程。 而init这个进程,它是其他进程的老大,只有关机命令的那些操作对它有效,类似于自杀,而其他进程别想动它一根汗毛
  • 打赏
  • 举报
回复
还想问下,上面第二个里面的致命信号是终止信号么?

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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