Linux 下子进程与父进程的关系
2013-08-28 16:04
246 查看
我们知道,Linux下父进程可以使用fork 函数创建子进程,但是当父进程先退出后,子进程会不会也退出呢?
通过下面这个小实验,我们能够很好的看出来:
通过下面这个小实验,我们能够很好的看出来:
/******** basic.c ********/ 1 #include "basic.h" pid_t Fork(void) { pid_t pid = fork(); if (pid < 0) { fprintf(stderr, "Fork error: %s\n", strerror(errno)); exit(0); } return pid; }
********** basic.h *********** #ifndef __CSAPP_BASIC_H #define __CSAPP_BASIC_H #include <stdio.h> #include <errno.h> #include <stdlib.h> #include <signal.h> #include <unistd.h> #include <string.h> /* function definition concerned with basic.c */ pid_t Fork(); #endif
******* fork.c ********* #include "basic.h" int main() { int pid = Fork(); int x = 2; if (pid == 0) { printf("child: pid = %d, ppid = %d, x = %d\n", getpid(), getppid(), ++x); sleep(3); printf("child: pid = %d, ppid = %d, x = %d\n", getpid(), getppid(), ++x); exit(0); } printf("parent: pid = %d, ppid = %d, x = %d\n", getpid(), getppid(), --x); } 通过 gcc fork.c basic.c -o fork 编译即可的 fork 程序。 运行 ./fork
可以看出父进程首先退出,退出前child的PPID为12256, 退出后子进程的PPID变为了 1.说明父进程退出后的子进程由 init 超级进程1领养。而该进程是不绝不会退出的。
相关文章推荐
- Linux中的进程关系详解
- (转)Linux进程关系
- Linux进程关系
- Linux报错-bash: fork: retry: Resource temporarily unavailable和进程描述符之间的关系
- 线程详解,以及linux下线程和进程的关系
- Linux中,子进程与父进程的继承关系
- Linux进程关系
- linux进程间的关系
- linux系统文件流、缓冲及描述符与进程间关系详解
- Linux 虚拟文件系统和进程的关系
- Linux进程关系
- Linux进程的层次关系
- linux系统文件流、文件描述符与进程间关系详解
- Linux命令之pstree - 以树状图显示进程间的关系
- Linux进程关系
- Linux中父子进程的继承关系
- Linux之进程之间的关系
- linux 进程的权限与用户权限及文件属性的关系
- linux下进程-进程组-会话之间的关系-代码说明一切
- JAVA进程和linux内存间的大小关系