博客
关于我
系统编程-进程-守护进程、孤儿进程、僵尸进程
阅读量:418 次
发布时间:2019-03-06

本文共 1571 字,大约阅读时间需要 5 分钟。

 

1. 守护进程

 

 

2. 孤儿进程

父进程结束,子进程就成为了孤儿进程。孤儿进程由1号进程(init进程)领养。

 

2.1实验: 

实验思路: 先产生一个孤儿进程,然后打印出该孤儿进程的父进程ID。

#include 
#include
#include
#include
#include
#include
#include
// exit(0)int main(){ int i=0; printf("before fork : pid: %d, ppid: %d\n", \ getpid(), getppid()); pid_t pid = fork(); if(pid < 0){ perror("fork "); }else if(0 == pid){ sleep(3); }else{ exit(0); } printf("pid: %d, ppid: %d\n", \ getpid(), getppid()); while(1); printf("pid: %d \n", getpid()); return 0;}

  

2.1.1. ubuntu上编译运行

孤儿进程的父进程是init进程,即ID号为1的进程啊, 这里怎么是1673(upstart)进程? 百度下

经过百度,可以理解为: 在ubuntu内,upstart进程就是init进程。

 

2.1.2 嵌入式linux板子上运行:

 

小结: 孤儿进程的父进程是init进程, init进程的进程ID一般是1。 ubuntu上的init进程是sbin/upatsrt, 其进程ID不是1。

 

 

3. 僵尸进程及其避免方法

 

3.1 实验:

实验思路: 先产生一个僵尸进程, 然后在另一个终端内执行: ps -aux | grep process_name ,  观察该进程是否为僵尸进程。

                   同时测试杀死僵尸进程的方法。

#include 
#include
#include
#include
#include
#include
#include
// exit(0)int main(){ int i=0; printf("before fork : pid: %d, ppid: %d\n", \ getpid(), getppid()); pid_t pid = fork(); if(pid < 0){ perror("fork "); }else if(0 == pid){ printf("pid: %d, ppid: %d\n", \ getpid(), getppid()); exit(0); } while(1); return 0;}

在一个ubuntu的终端内编译运行:

在另一个ubuntu终端内查看、验证该进程的僵尸状态

可见 12132进程是R,即运行态。 而12133是Z,即僵尸态。

 

接着,我们来测试杀死该僵尸进程的方法

测试1

 

小结: 使用kill -9 直接去杀僵尸进程 , 无法杀死。

 

测试2

此时已不存在ab内含有僵尸进程的信息。 所以僵尸进程已经被杀死。Ps: 这个12225 --color=auto不知道是啥信息,ubuntu上有这类信息了,不管他了,这不重要。

 

小结:杀死僵尸进程的父进程,可以达到杀死僵尸进程的目的。

 

 

 

.

转载地址:http://zzauz.baihongyu.com/

你可能感兴趣的文章
不需要爬虫也能轻松获取 unsplash 上的图片
查看>>
痞子衡嵌入式:语音处理工具pzh-speech诞生记(2)- 界面构建(wxFormBuilder3.8.0)
查看>>
将博客搬至CSDN
查看>>
痞子衡嵌入式:利用i.MXRT1xxx系列ROM提供的FlexSPI driver API可轻松IAP
查看>>
痞子衡嵌入式:极易上手的可视化wxPython GUI构建工具(wxFormBuilder)
查看>>
痞子衡嵌入式:串口调试工具pzh-com诞生记(2)- 界面构建(wxFormBuilder3.8.0)
查看>>
elementUi源码解析(1)--项目结构篇
查看>>
自动遍历测试之Monkey工具
查看>>
Nmap扫描工具介绍
查看>>
算法笔记:递归、动态规划
查看>>
Pytest插件开发
查看>>
常用Windows 快捷键
查看>>
linux命令-压缩与打包
查看>>
ORACLE 11g 生产中高水位线(HWM)处理
查看>>
centos 6.x 编译安装 pgsql 9.6
查看>>
weblogic 服务器部署SSL证书
查看>>
Oracle Orion tool check io(ORACLE Orion 工具查看以及校验IO)
查看>>
oracle 11g not in 与not exists 那个高效?
查看>>
Linux 安装Redis 5.0(以及参数调优)
查看>>
html5 Game开发系列文章之 零[开篇]
查看>>