博客
关于我
系统编程-进程-守护进程、孤儿进程、僵尸进程
阅读量: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/

你可能感兴趣的文章
Failed to get D-Bus connection: Operation not permitted解决
查看>>
取消vim打开文件全是黄色方法
查看>>
一个系统部署多个tomcat实例
查看>>
HP服务器设置iLO
查看>>
从头实现一个WPF条形图
查看>>
使用QT实现一个简单的登陆对话框(纯代码实现C++)
查看>>
QT :warning LNK4042: 对象被多次指定;已忽略多余的指定
查看>>
GLFW 源码 下载-编译-使用/GLAD配置
查看>>
针对单个网站的渗透思路
查看>>
Typescript 学习笔记六:接口
查看>>
02、MySQL—数据库基本操作
查看>>
OpenJDK1.8.0 源码解析————HashMap的实现(一)
查看>>
MySQL-时区导致的时间前后端不一致
查看>>
2021-04-05阅读小笔记:局部性原理
查看>>
go语言简单介绍,增强了解
查看>>
架构师入门:搭建基本的Eureka架构(从项目里抽取)
查看>>
MongoDB 快速扫盲贴
查看>>
one + two = 3
查看>>
sctf_2019_easy_heap
查看>>
PyQt5之音乐播放器
查看>>