Linux中的僵死进程(01)---僵死进程的概念
2015-09-20 18:12
537 查看
环境:Vmware Workstation;CentOS-6.4-x86_64
说明:
1、僵死进程:子进程死亡,父进程存在。
2、子进程不会被回收,回收的时机是父进程退出;也就是说,僵死进程的子进程,只有父进程退出的时候才会被回收。
下面的程序是实现僵死进程的一个例子:
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
int main(int argc, char *args[])
{
// 执行fork并获取返回值
pid_t id = fork();
// 判断fork是否成功
// 当返回值为-1时,说明fork失败
if (id == -1)
{
printf("fork failed : %s", strerror(errno));
}
if (id > 0)
{
// 父进程休眠20秒
sleep(20);
}
else
{
// 子进程立即退出
exit(0);
}
return 0;
}
编译并执行程序:
[negivup@negivup mycode]$ gcc -o main main.c
[negivup@negivup mycode]$ main
[negivup@negivup ~]$ ps -aux
negivup 15025 0.0 0.0 3916 340 pts/1 S+ 18:16 0:00 main 这是僵死进程
negivup 15026 0.0 0.0 0 0 pts/1 Z+ 18:16 0:00 [main] <defunct> 这是等待回收的子进程,defunct意思“死的” 这个死的进程,只有在父进程消亡的时候才会被回收。
PS:根据传智播客视频学习整理得出。
说明:
1、僵死进程:子进程死亡,父进程存在。
2、子进程不会被回收,回收的时机是父进程退出;也就是说,僵死进程的子进程,只有父进程退出的时候才会被回收。
下面的程序是实现僵死进程的一个例子:
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
int main(int argc, char *args[])
{
// 执行fork并获取返回值
pid_t id = fork();
// 判断fork是否成功
// 当返回值为-1时,说明fork失败
if (id == -1)
{
printf("fork failed : %s", strerror(errno));
}
if (id > 0)
{
// 父进程休眠20秒
sleep(20);
}
else
{
// 子进程立即退出
exit(0);
}
return 0;
}
编译并执行程序:
[negivup@negivup mycode]$ gcc -o main main.c
[negivup@negivup mycode]$ main
程序还在执行,没有退出的时候,打开一个新的终端,查看僵死进程的状态另一个终端:
[negivup@negivup ~]$ ps -aux
negivup 15025 0.0 0.0 3916 340 pts/1 S+ 18:16 0:00 main 这是僵死进程
negivup 15026 0.0 0.0 0 0 pts/1 Z+ 18:16 0:00 [main] <defunct> 这是等待回收的子进程,defunct意思“死的” 这个死的进程,只有在父进程消亡的时候才会被回收。
PS:根据传智播客视频学习整理得出。
相关文章推荐
- Linux中的孤儿进程
- 《Linux内核设计与实现》读书笔记(七)- 中断处理
- 在linux系统上编写的第一个程序
- 关于Linux下配置环境变量的问题
- Win7和CentOS 6.5 双系统安装注意事项
- Linux中fork的使用(04)---wait模型
- 一步一步做一个linux文件传输软件(四)
- linux 定时备份
- Linux和Android的firmware机制
- linux常用命令(43):traceroute 命令
- Linux下opennms编译
- 1.1Linux 系统简介(学习过程)
- linux常用命令(42):ping 命令
- 1.12Linux下软件安装(学习过程)
- CentOS 7安装完成后无法加载win10的解决方案
- linux常用命令(41):route 命令
- Linux中的sleep函数
- Linux 基础入门
- Linux(9.14-9.20)学习笔记
- Linux上free命令的输出