使用代码验证linux子进程与父进程的关系
使用代码验证linux子进程与父进程的关系
发布时间:2016-12-28 来源:查字典编辑
摘要:复制代码代码如下:/********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领养。而该进程是不绝不会退出的。

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新C语言学习
热门C语言学习
编程开发子分类