在Linux6.1/fs/proc/array.c中提供了get_task_state来获取进程的状态,由以下源码可知Linux进程的状态一共有9种。
static const char * const task_state_array[] = {
/* states in TASK_REPORT: */
"R (running)", /* 0x00 */
/*S状态也叫可中断睡眠(TASK_INTERRUPTIBLE),是浅度睡眠;当资源来了会被唤醒,信号
来了也会被唤醒。*/
"S (sleeping)", /* 0x01 */
/*D状态也叫不可中断睡眠(TASK_NUINTERRUPTIBLE),是深度睡眠;当资源来了会被唤醒,但
是信号(进程的异步打断机制)来了不会唤醒,它是不会响应任何信号的,所以即使用kill -9也
杀不死它。*/
"D (disk sleep)", /* 0x02 */
"T (stopped)", /* 0x04 */
"t (tracing stop)", /* 0x08 */
"X (dead)", /* 0x10 */
"Z (zombie)", /* 0x20 */
"P (parked)", /* 0x40 */
/* states beyond TASK_REPORT: