- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
内核中谁负责终止进程。
如果“kill”来了,进程处于阻塞状态怎么办。 kill是否等到进程进入running状态才清理自己。
如果有人可以在内核方面回答更多问题,例如当 kill 命令生成 SIGINT 时,内核将调用所有内容,直到最后清除 TCB(任务控制 block )。
最佳答案
我假设您在谈论 SIGKILL,所以我将讨论仅限于该信号。
当一个进程在另一个进程上引发 SIGKILL 时,SIGKILL 将作为挂起信号添加到受害进程上,并清除任何挂起的 SIGSTOP、SIGTSTP、SIGTTOU 或 SIGTTIN 信号。如果受害者停止或处于可中断的 sleep 状态,受害者将被唤醒(使其可运行)。
当受害进程下一次尝试从内核模式转到用户模式时,将检查挂起的信号。这是找到挂起的 SIGKILL 的地方,内核调用 do_exit() 而不是返回到用户模式。
从内核模式到用户模式的转换将在下一次调度进程时进行(除非它处于不可中断的 sleep 状态——这是臭名昭著的 D 状态)。如果它处于不可中断的 sleep 状态,则该进程在被唤醒之前不会尝试返回到用户模式。
关于c - "kill"是如何工作的?特别是 "kill"如何处理被阻止的进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1107658/
我已经可以在其中输入一些附加文本了mydomain/wiki/Special:UserLogin。我添加了一句话: In order to apply for an account send an m
有人可以解释以下脚本输出背后的逻辑吗? import numpy if(numpy.dtype(numpy.float64) == None): print "Surprise!!!!" 谢谢
是我还是 gmail bulls**t?在 outlook/浏览器上,我的电子邮件是完美的,但在 gmail 上,2 个表之间有一个空间,为什么?!?图片:http://i.imgur.com/srJ
我是一名优秀的程序员,十分优秀!