使用代码验证linux子进程与父进程的关系
作者:
/******** basic.c ********/
#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 vps服务器进程kswapd0与events/0消耗大量CPU的问题
- linux 创建守护进程的相关知识
- linux系统使用python监控apache服务器进程脚本分享
- linux根据pid获取进程名和获取进程pid(c语言获取pid)
- shell监控linux系统进程创建脚本分享
- linux获取进程执行时间方法示例
- Linux进程通信(IPC)方式简介
- linux c 获得当前进程的进程名和执行路径(示例)
- 浅析linux环境下一个进程最多能有多少个线程
- linux下监视进程 崩溃挂掉后自动重启的shell脚本
- Linux C 获取进程退出值的实现代码
- 深入探讨linux下进程的最大线程数、进程最大数、进程打开的文件数
- 深入理解linux下查看进程内存的使用情况
- linux下查看swap分区被哪些进程占用实现脚本
- Linux BASH多进程并行处理的方法实现
- Linux Shell中判断进程是否存在的代码
- Linux/window下怎样查看某个端口被哪个程序/进程占用
- linux杀进程的多种方法