我阅读了有关this post的SIGKILL
,并对以下陈述感到困惑:
仅某些系统调用可中断,因此内核在内部将进程标记为处于特殊的“濒死”状态,直到系统呼叫或I / O操作已解决
...
一旦解决了任何进程内内核例程,进程状态为从“死”变为“死”,内核开始清理它
但是我在内核源代码中找不到对此的任何确认。任务状态在linux/sched.h中定义:
#define TASK_RUNNING 0x0000 #define TASK_INTERRUPTIBLE 0x0001 #define TASK_UNINTERRUPTIBLE 0x0002 #define __TASK_STOPPED 0x0004 #define __TASK_TRACED 0x0008 /* Used in tsk->exit_state: */ #define EXIT_DEAD 0x0010 #define EXIT_ZOMBIE 0x0020 #define EXIT_TRACE (EXIT_ZOMBIE | EXIT_DEAD) /* Used in tsk->state again: */ #define TASK_PARKED 0x0040 #define TASK_DEAD 0x0080 #define TASK_WAKEKILL 0x0100 #define TASK_WAKING 0x0200 #define TASK_NOLOAD 0x0400 #define TASK_NEW 0x0800 #define TASK_STATE_MAX 0x1000
并且在linux / sched.h和其他调度程序文件中都没有任何“濒死”状态。有人可以弄清楚在不间断的系统调用中使用哪个任务状态将任务标记为“正在死”吗?
我阅读了有关SIGKILL的文章,并对以下语句感到困惑:只有某些系统调用可中断,因此内核在内部将进程标记为处于特殊的“正在消亡” ...