hello~ 很高兴见到大家! 这次带来的是Linux系统中关于进程这部分的一些知识点,如果对你有所帮助的话,可否留下你宝贵的三连呢? 个 人 主 页: 默|笙




以下是Linux系统里对于状态的定义
static const char * const task_state_array[] = {
"R (running)" //运行
"S (sleeping)" //休眠
"D (disk sleep)" //深度休眠
"T (stopped)" //暂停
"t (tracing stop)"//追踪暂停
"X (dead)" //死亡
"Z (zombie)", //僵尸
};//代码如下:
#include <stdio.h>
int main()
{
while(1)
{}
return 0;
}

输出:


等待显示屏的就绪,task_struct在显示屏struct device的等待队列里等待。
输入:



等待键盘的就绪,task_struct在键盘struct device的等待队列里等待。
kill -19 进程PID 暂停进程 kill -18 进程PID 恢复进程之前状态 kill - 9 进程PID 干掉进程

用的也是一个简单无限循环代码。




当运行到断点的时候,状态就会变成ts+,s是首个会话进程,+是前台进程。 不只是t的原因:ts+:因为我用了 CGDB 调试(终端前台运行),GDB 为 test 进程创建了独立会话,且占用终端前台 → 三个标记同时触发。
#include<stdio.h>
2 #include<unistd.h>
3 #include<sys/types.h>
4 int main()
5 {
6 pid_t p = fork();
7 if (p == 0)
8 {
9 while(1)
10 {
11 printf("我是子进程,PID:%d, PPID: %d\n", getpid(), getppid ());
12 sleep(1);
13 }
14 }
15 else
16 {
17 while(1)
18 {
19 printf("我是父进程,PID:%d\n", getpid());
20 sleep(1);
21 }
22 }
23 return 0;
24 }

今天的分享就到此结束啦,如果对读者朋友们有所帮助的话,可否留下宝贵的三连呢~~ 让我们共同努力, 一起走下去!