手机
当前位置:查字典教程网 >编程开发 >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++ 一个二进制串转化为整数的解决方法

C语言编程技巧 关于const和#define的区别心得

static_cast,dynamic_cast,reinterpret_cast,const_cast的区别及用法详解

如何用C语言去除字符串两边的空字符

用c语言实现HUP信号重启进程的方法

如何将C语言代码转换为应用程序(也就是编译)

基于C程序启动代码的深入分析

使用root权限运行自己所编译程序的解决方法

C++中一维数组与指针的关系详细总结

精品推荐
分类导航