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的套接字 ...
随机推荐
- cxf之org.xml.sax.SAXParseException; lineNumber: 7; columnNumber: 37; cvc-complex-type.2.4.c: 通配符的匹配很全面, 但无法找到元素 'jaxws:server' 的声明。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- <转>C++ explicit关键字详解
要文转自:http://www.cnblogs.com/ymy124/p/3632634.html 首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造 ...
- 推荐6款极具个性化的在线生成logo的网站
http://www.douban.com/group/topic/10434724/
- subline上装node.js插件
此方法绝对可行,我已试过:http://www.mamicode.com/info-detail-84030.html
- 摘:ClickOnce部署
ClickOnce部署 http://www.cnblogs.com/weixing/p/3358740.html#undefined (1):一些发布方式 ClickOnce是什么玩意儿,这个问题嘛 ...
- html表单的各种输入控件
表单的输入控件主要是input和select.其中input可以是多种类型,通过type属性来进行定义,type可以取值是text,radio,checkbox,password,submit,res ...
- SVN 版本服务器搭配全过程详解(含服务端、客户端)
1.为什么要用VisualSVN Server,而不用Subversion? 回答: 因为如果直接使用Subversion,那么在Windows 系统上,要想让它随系统启动,就要封装SVN Serve ...
- AAA含义图解
来源: <FreeRADIUS Beginner's Guide> 这本书 1,认证 2,授权 3,审计
- [na]vrrp两用(网关冗余+服务器热备)
VRRP的两种用途 早上想了想vrrp的使用,1,网关冗余 2,服务器热备 思想稍微有点不一样.主要在于监控口 服务器的话有心跳线,用户同步一些配置和迁移一些服务.达到热备的目的.:牵涉到四个优先级: ...
- 针对Properties中实时性要求不高的配置参数,用Java缓存起来
Properties常用于项目中参数的配置,当项目中某段程序需要获取动态参数时,就从Properties中读取该参数,使程序是可配置的.灵活的. 有些配置参数要求立即生效,有些则未必: 一.实时性要求 ...