上次讲了进程这些内容:Linux:进程概念(二.查看进程、父进程与子进程、进程状态详解)
文章目录
1.Linux中的进程状态
static const char* const task_state_array[] =
{
"R (running)", /* 0 */
"S (sleeping)", /* 1 */
"D (disk sleep)", /* 2 */
"T (stopped)", /* 4 */
"t (tracing stop)", /* 8 */
"X (dead)", /* 16 */
"Z (zombie)", /* 32 */
};
R运行状态(running): 并不意味着进程一定在运行中,它表明进程要么是在运行中要么在运行队列里。
S睡眠状态(sleeping): 意味着进程在等待事件完成(这里的睡眠有时候也叫做可中断睡眠(interruptible sleep))
D磁盘休眠状态(Disk sleep)有时候也叫不可中断睡眠状态(uninterruptible sleep),在这个状态的进程通常会等待IO的结束。
T停止状态(stopped): 可以通过发送 SIGSTOP 信号给进程来停止(T)进程。这个被暂停的进程可以通过发送 SIGCONT 信号让进程继续运行。
X死亡状态(dead):这个状态只是一个返回状态,你不会在任务列表里看到这个状态
Z僵尸状态(zombie):下面详讲它
1.1前台进程和后台进程
在Linux中,可以将进程分为前台进程和后台进程,它们的区别在于与终端的交互方式和执行状态。
-
前台进程:会有
+
- 前台进程是当前正在与用户交互的进程,它会占用终端的输入和输出。
- 当用户在终端启动一个程序时,该程序通常成为前台进程,用户可以看到程序的输出,并且可以与程序进行交互。
- 前台进程会阻塞终端,直到该进程执行完毕或者暂停。
- 用户可以通过按下Ctrl + C来中断前台进程的执行。
-
后台进程:没有
+
- 后台进程是在后台执行的进程,不会占用终端的输入和输出。
- 用户可以在命令行中在命令后面加上"&"符号,将进程放入后台执行。
- 后台进程不会阻塞终端,用户可以继续输入其他命令。
- 用户可以使用命令
bg
将一个前台进程转为后台进程,或者使用命令jobs
查看当前所有的作业(包括前台和后台)。 - 使用
kill 进程ID
命令关闭对应的后台进程,比如kill 1234
运行状态
运行状态(Running)是进程可以被调度执行的状态。当一个进程处于运行状态时,它的代码正在被 CPU 执行,即正在运行指令并处理各种任务。在 Linux 中,通常用
R
表示进程处于运行状态。
int main()
{
while (1)
{
;
}
return 0;
}
睡眠状态
就是我们上次学习的阻塞状态,在Linux中,进程的睡眠状态(Sleeping)是指进程因等待某些事件而暂时停止执行。这个状态有时也被称为可中断睡眠(Interruptible Sleep)&#