Linux进程状态
来源:互联网 发布:谷歌搜索引擎优化指南 编辑:程序博客网 时间:2024/05/22 14:11
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):当进程正在被CPU执行,或已经准备就绪随时可由调度程序执行,则称该进程为处于运行状态(running)进程要么在运行中,要么在运行队列里面,并不一定是正在运行。
S(sleeping):等待某一事件的完成
D(disk sleep):磁盘休眠状态,这个进程通常是等待IO的结束
T(stopped):暂停状态,当进程收到信号SIGSTOP、SIGTSTP、SIGTTIN或SIGTTOU时就会进入暂停状态。可向其发送SIGCONT信号让进程转换到可运行状态。进程被暂停,我们可以使用指令kill -SIGSTOP 还有kill -SIGCONT 来是进程被暂停和被继续。
Z(zombie):僵死状态,当进程已停止运行,但其父进程还没有询问其状态时,则称该进程处于僵死状态。
下面提供了一段创建僵尸进程的例子
#include<stdio.h> #include<stdlib.h> int main() { int id = fork(); if(id > 0) { printf("Parent is sleeping....\n"); sleep(5); } if(id == 0) { printf("son exit"); exit(EXIT_SUCCESS); } return 0; }
程序执行的结果是,首先打印出了Parent is sleeping….,然后另换一行打印出son exit,接着持续了5秒钟之后程序退出。
我们在运行上面的程序的时候,我们可以打开终端,然后输入指令进行查看
ps -ax | grep myprocess
会发现我们进程处于僵尸状态
这里的子进程就是一个僵尸进程,可以这样理解,就是我们 的子进程已经退出了,但是子进程退出了之后无家可归,就是一个飘移的孤魂野鬼一样,所以这里是一个僵尸进程。
PS:
进程已死亡,但父进程没有收尸,该进程就成僵尸进程
僵尸进程不打开任何文件,几乎不占内存,但是占据进程表的资源,进程表记录pid、进程状态、CPU时间等
僵尸状态是每个子进程结束时必经的状态
系统监控中出现大量僵尸进程,应检查其父进程代码
- linux 进程 状态
- Linux进程状态
- Linux进程状态解析
- linux进程状态
- linux进程状态浅析
- linux进程状态浅析
- linux进程状态浅析
- Linux 进程状态 说明
- Linux进程状态解析
- Linux进程状态解析
- Linux 进程状态
- linux进程状态浅析
- linux进程状态标志
- Linux进程状态浅析
- linux 进程状态解析
- Linux 进程状态
- Linux 进程状态
- Linux 进程状态
- Android程序猿带你学python第4章--类
- 软件测试
- Struts解决中文乱码问题
- (OK) ospf6d.conf
- IOS 版 Opera 已不再更新
- Linux进程状态
- tplink 有良知的路由器厂商
- c语言写蛇形矩阵
- MDK4.60界面使用笔记
- Markdown学习
- 魔法阵
- 简单聊聊Kryo serialization
- BZOJ 2242: [SDOI2011]计算器
- 当你输入网址时都发生了什么(2)——TCP链接的建立