init进程接管孤儿进程的验证
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include<stdlib.h>
#include<signal.h>
int main(int argc , char **argv)
{
int id;
id=fork();
if(id<)
{
printf("fork error\n");
}
else if(id==)
{
printf("I'm in child process%d parent process%d\n",getpid(),getppid());
sleep();
exit();
}
else if(id>)
{
printf("I'm in parent process%d\n",getpid());
} return ;
} [root@linux Desktop]# gcc 僵尸进程.c
[root@linux Desktop]# ./a.out
I'm in parent process4308
[root@linux Desktop]# I'm in child process4309 parent process [root@linux Desktop]#
从上面的输出结果可以看出孩子进程4309的父进程是1号进程也就是init进程,这是因为子进程的父进程死亡后
子进程被init进程接管!所以说输出他的父进程号为1; [root@linux Desktop]# ps --ppid
PID TTY TIME CMD
? :: udevd
? :: vmware-vmblock-
? :: vmtoolsd
? :: portreserve
? :: rsyslogd
? :: dbus-daemon
? :: NetworkManager
? :: modem-manager
? :: avahi-daemon
? :: wpa_supplicant
? :: cupsd
? :: acpid
? :: hald
? :: sshd
? :: tpvmlp
? :: mysqld_safe
? :: abrtd
? :: abrt-dump-oops
? :: crond
? :: atd
? :: rhsmcertd
? :: gdm-binary
tty2 :: mingetty
tty3 :: mingetty
tty4 :: mingetty
tty5 :: mingetty
tty6 :: mingetty
? :: console-kit-dae
? :: dbus-launch
? :: devkit-power-da
? :: auditd
? :: polkitd
? :: rtkit-daemon
? :: gnome-keyring-d
? :: dbus-launch
? :: dbus-daemon
? :: gconfd-
? :: gnome-settings-
? :: seahorse-daemon
? :: gvfsd
? :: gvfs-fuse-daemo
? :: bonobo-activati
? :: wnck-applet
? :: trashapplet
? :: vmtoolsd
? :: gvfs-gdu-volume
? :: udisks-daemon
? :: pulseaudio
? :: gvfs-gphoto2-vo
? :: gvfs-afc-volume
? :: clock-applet
? :: gdm-user-switch
? :: gnote
? :: notification-ar
? :: restorecond
? :: gvfsd-trash
? :: gnome-screensav
? :: gvfsd-burn
? :: gvfsd-metadata
? :: notification-da
? :: gnome-terminal
? :: gedit
4309 pts/0 00:00:00 a.out 注意下面这幅图中这句没有输出 [root@linux Desktop]# ps --ppid
PID TTY TIME CMD
? :: udevd
? :: vmware-vmblock-
? :: vmtoolsd
? :: portreserve
? :: rsyslogd
? :: dbus-daemon
? :: NetworkManager
? :: modem-manager
? :: avahi-daemon
? :: wpa_supplicant
? :: cupsd
? :: acpid
? :: hald
? :: sshd
? :: tpvmlp
? :: mysqld_safe
? :: abrtd
? :: abrt-dump-oops
? :: crond
? :: atd
? :: rhsmcertd
? :: gdm-binary
tty2 :: mingetty
tty3 :: mingetty
tty4 :: mingetty
tty5 :: mingetty
tty6 :: mingetty
? :: console-kit-dae
? :: dbus-launch
? :: devkit-power-da
? :: auditd
? :: polkitd
? :: rtkit-daemon
? :: gnome-keyring-d
? :: dbus-launch
? :: dbus-daemon
? :: gconfd-
? :: gnome-settings-
? :: seahorse-daemon
? :: gvfsd
? :: gvfs-fuse-daemo
? :: bonobo-activati
? :: wnck-applet
? :: trashapplet
? :: vmtoolsd
? :: gvfs-gdu-volume
? :: udisks-daemon
? :: pulseaudio
? :: gvfs-gphoto2-vo
? :: gvfs-afc-volume
? :: clock-applet
? :: gdm-user-switch
? :: gnote
? :: notification-ar
? :: restorecond
? :: gvfsd-trash
? :: gnome-screensav
? :: gvfsd-burn
? :: gvfsd-metadata
? :: notification-da
? :: gnome-terminal
? :: gedit
[root@linux Desktop]#
在我测试这两幅图的时候,第一幅图输出后,要等大概两分多钟,也就是大概子进程执行完后,
init进程调用wait会清理掉刚才接收的子进程( )。
子进程4309
//如果将signal(SIGCHLD, SIG_IGN);这行代码加上放在main函数的第一行,应该说会出现一种情况当父进程退出时,父进程的父进程不会理会他,而直接让init进程接管他,但是用ps --ppid 1输出时,没有发现父进程。!只有子进程号!
init进程接管孤儿进程的验证的更多相关文章
- 并发编程(二)--利用Process类开启进程、僵尸进程、孤儿进程、守护进程、互斥锁、队列与管道
一.multiprocessing模块 1.multiprocessing模块用来开启子进程,并在子进程中执行我们定制的任务(比如函数),该模块与多线程模块threading的编程接口类似. 2.mu ...
- 并发编程(二)——利用Process类开启进程、僵尸进程、孤儿进程、守护进程、互斥锁、队列与管道
Process类与开启进程.守护进程.互斥锁 一.multiprocessing模块 1.multiprocessing模块用来开启子进程,并在子进程中执行我们定制的任务(比如函数),该模块与多线程模 ...
- 进程——wait与waitpid、僵尸进程与孤儿进程
僵尸进程:子进程终止了,但是父进程没有回收子进程的资源PCB.使其成为僵尸进程 孤儿进程:父进程先与子进程结束了,使得子进程失去了父进程,这个时候子进程会被1号进程init进程领养,成为孤儿进程 为了 ...
- Linux-进程描述(3)之进程状态僵尸进程与孤儿进程
进程状态 进程状态反映进程执行过程的变化.这些状态随着进程的执行和外界条件的变化而转换.为了弄明正正在运行的进程是什么意思,我们需要知道进程的不同状态.一个进程可以有多个状态(在Linux内核中,进程 ...
- 多进程wait、僵尸进程、孤儿进程、prctl
1.概念 1.孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程.孤儿进程将被init进程(进程号为1)所收养,从而保证每个进程都会有一个父进程.而Init进程会自 ...
- 【Linux 进程】孤儿进程、僵尸进程和守护进程
1.孤儿进程: 孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程.孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作.孤儿进程是 ...
- linux的僵尸进程和孤儿进程
1 僵尸进程: 子进程已经退出勒 但是还没有回收资源的进程为僵尸进程 代码验证 #include <stdio.h> #include <stdlib.h> #include ...
- Python进阶----进程间数据隔离, join阻塞等待, 进程属性, 僵尸进程和孤儿进程, 守护进程
Python进阶----进程间数据隔离, join阻塞等待, 进程属性, 僵尸进程和孤儿进程, 守护进程 一丶获取进程以及父进程的pid 含义: 进程在内存中开启多个,操作系统如何区分这些进程, ...
- [并发编程 - socketserver模块实现并发、[进程查看父子进程pid、僵尸进程、孤儿进程、守护进程、互斥锁、队列、生产者消费者模型]
[并发编程 - socketserver模块实现并发.[进程查看父子进程pid.僵尸进程.孤儿进程.守护进程.互斥锁.队列.生产者消费者模型] socketserver模块实现并发 基于tcp的套接字 ...
随机推荐
- Web Service-WSDL详解
WSDL指网络服务描述语言 (Web Services Description Language), 是一种用XML编写的文档, 用于描述Web Service和函数.参数以及返回值等; 文档内规定了 ...
- xml 引入约束文件
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" ...
- HDUOJ--1874 畅通工程续
畅通工程续 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- Http Analyzer Std V3.3.1.140 汉化补丁
http://www.cnblogs.com/nicch/archive/2008/08/30/ha_httpanalyzerstdv3.html Http Analyzer Std V3.3.1.1 ...
- 使用SecureCRT连接linux
1.登录之后进入linux系统,输入ifconfig(interfaces config)查看网卡信息 2.设置VMWare的虚拟机连接方式为仅主机模式 3.查看VMWare为仅主机模式虚拟网卡IP地 ...
- 学习WCF笔记之二
一.学习文章http://www.cnblogs.com/iamlilinfeng/archive/2012/09/25/2700049.html 二.步骤 学习WFC,按照大神的文章一步步学习,不过 ...
- ORACLE11g中毒恢复
很不幸的,win2003server疏于管理,中毒了,清理了病毒以后.oracle也瘫痪了.上次备份还在一周前,这一周的数据咋办? 首先的想法,是另找一台机器,装个一模一样的oracle.再把被删的文 ...
- CTPN - 训练
源码地址:https://github.com/eragonruan/text-detection-ctpn 该地址提供了 CTPN 的 tf 版本的实现,代码文档写得很详细,issue 里面也帮助解 ...
- [转]HSpice仿真
一.HSPICE基础知识Avant! Start-Hspice(现在属于Synopsys公司)是IC设计中最常使用的电路仿真工具,是目前业界使用最为广泛的IC设计工具,甚至可以说是事实上的标准.目前, ...
- python标准库介绍——18 StringIO 模块详解
==StringIO 模块== [Example 2-8 #eg-2-8] 展示了 ``StringIO`` 模块的使用. 它实现了一个工作在内存的文件对象 (内存文件). 在大多需要标准文件对象的地 ...