进程学习——父进程子进程ID
来源:互联网 发布:视频后期美颜软件 编辑:程序博客网 时间:2024/05/10 02:16
今天在测试共享内存时编写了一个进程测试的代码,在调用fork函数创建子进程时,在父进程中返回子进程pid,在子进程中返回0;具体代码如下:
#include <unistd.h>#include <stdio.h>int main(){ pid_t pid; pid = fork(); //父进程 if(pid != 0) { printf("this is father, child pid = %d\n", pid); } //子进程 if(pid == 0) { printf("this is child, father pid = %d\n", getppid()); }}
在运行这段程序时出现了下面的结果:
hello@hello-machine:~/study-linux/unix_c/12-mem_share
this is father, child pid = 3682
this is child, father pid = 1
hello@hello-machine:~/study-linux/unix_c/12-mem_share$ ./test
this is father, child pid = 3685
this is child, father pid = 3684
在第二个运行结果中出现了子进程的父进程pid为1的情况,这是因为在fork之后是父进程先执行还是子进程先执行是不确定的,在这个代码中父进程和子进程的内容都是十分简单的;在子进程正常终止时,会将其终止状态返回给父进程,如果父进程在子进程之前终止,则会进行这样的处理呢?对于父进程已经终止的所有进程,它们的父进程都改变为init进程,称这些进程有init进程领养。具体过程为:在一个进程终止时,内核逐个检查所有活动进程,判断它是否是要终止进程的子进程,如果是,则将该进程的父进程ID更改为1(init进程的ID)。这种处理方法保证了每个进程都有一个父进程。
在本文的代码中当父进程先运行结束时,子进程就被init进程领取,这样它的父进程pid就为1。
- 进程学习——父进程子进程ID
- 进程管理:通过父进程ID获取子进程ID
- 从父进程id获取子进程id
- 父进程 子进程
- 父进程子进程
- 通过进程名称获取进程ID、通过子进程ID获取其父进程ID及通过进程ID获取进程名称
- WIN通过子进程获取父进程ID
- 进程学习5--父进程wait回收子进程
- 父进程与子进程
- 子进程与父进程
- 父进程与子进程
- 子进程与父进程
- 父进程与子进程
- 父进程干掉子进程
- 进程 进程句柄 进程ID
- Linux进程全解3——进程概念、进程ID、多进程调度原理
- Linux进程全解7——父进程wait / waitip回收子进程
- NodeJs——子进程
- Mac 使用brew 安装软件
- AngularJS介绍 - 下一个大框架
- iOS常见错误9-UITableView,UIScrollView,UICollectionView偏移20像素
- [BZOJ 3998]弦论
- Code Review的重要性
- 进程学习——父进程子进程ID
- 操作系统项目(一)安装qemu
- ios基础(一)
- min stack
- sgu 106(扩展欧几里得)
- iOS平台的数据库框架 FMDB
- Java ThreadLocal
- Everything You Need To Know To Start Using GnuPG with Mutt
- POJ 2299 线段树/树状数组求逆序数