进程需要创建3个子进程,但不创建孙子进程"/>
Linux 父进程需要创建3个子进程,但不创建孙子进程
Linux 进程家族树 生成三个子进程不生成孙子进程
- 1. 要求
- 2. 分析
- 2.1 getpid、getppid
- 2.2 不让子进程再生成进程
- 3. 代码
- 4. 运行截图
- 5. 绘制进程家族树
1. 要求
如果父进程需要创建3 子进程,但不创建孙子进程。请编写程序,并画出进程家族树。 (进程家庭树中填写进程 PID,使用 getpid, getppid)。
2. 分析
2.1 getpid、getppid
getpid是获取当前进程的ID号,getppid是获取当前进程的父进程的ID号。
2.2 不让子进程再生成进程
- 换句话说就是只让父进程创建进程,所以使用一个判断语句:
if (pid == getpid()) // 只能是父进程才能创建子进程
,这里的pid
应当为父进程ID。 - 题目要求只要三个子进程,所以循环三次:
for (i = 0; i < 3; ++i) // 生成三个进程
3. 代码
#include <stdio.h>
#include <unistd.h>int main(void)
{int pid = getpid(); // 获取当前进程 作为以下创建进程的父进程int i;for (i = 0; i < 3; ++i) // 生成三个进程{if (pid == getpid()) // 只能是父进程才能创建子进程{fork();}}printf("pid = %d, ppid = %d\n", getpid(), getppid());sleep(1); // 为防止父进程提前结束,睡眠等待,且这样输出工整
}
4. 运行截图
注:我是用ubuntu,内核版本5.3
5. 绘制进程家族树
更多推荐
Linux 父进程需要创建3个子进程,但不创建孙子进程
发布评论