手机
当前位置:查字典教程网 >编程开发 >C语言 >使用代码验证linux子进程与父进程的关系
使用代码验证linux子进程与父进程的关系
摘要:复制代码代码如下:/********basic.c********/#include"basic.h"pid_tFork(void){pid...

复制代码 代码如下:

/******** basic.c ********/

#include "basic.h"

pid_t Fork(void)

{

pid_t pid = fork();

if (pid < 0) {

fprintf(stderr, "Fork error: %sn", 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 = %dn", getpid(), getppid(), ++x);

sleep(3);

printf("child: pid = %d, ppid = %d, x = %dn", getpid(), getppid(), ++x);

exit(0);

}

printf("parent: pid = %d, ppid = %d, x = %dn", getpid(), getppid(), --x);

}

通过 gcc fork.c basic.c -o fork 编译即可的 fork 程序。 运行 ./fork

可以看出父进程首先退出,退出前child的PPID为12256, 退出后子进程的PPID变为了 1.说明父进程退出后的子进程由 init 超级进程1领养。而该进程是不绝不会退出的。

【使用代码验证linux子进程与父进程的关系】相关文章:

使用C语言中的time函数获取系统时间

用代码和UML图化解设计模式之桥接模式的深入分析

linux c程序中获取shell脚本输出的实现方法

C 转移表/转换表的深入分析

深入理解C语言中编译相关的常见错误

c++ 一个二进制串转化为整数的解决方法

成员初始化列表与构造函数体中的区别详细解析

使用C语言实现CRC校验的方法

深入分析父子线程、进程终止顺序不同产生的结果

C++输入一个字符串,把其中的字符按照逆序输出的两种方法解析

精品推荐
分类导航