Linux 父进程需要创建3个子进程,但不创建孙子进程
Linux 进程家族数 生成三个子进程不生成孙子进程1. 要求2. 分析2.1 getpid、getppid2.2 不让子进程再生成进程3. 代码3. 运行截图4. 绘制进程家族树1. 要求如果父进程需要创建3 子进程,但不创建孙子进程。请编写程序,并画出进程家族树。 (进程家庭树中填写进程 PID,使用 getpid, getppid)。2. 分析2.1 getpid、getppidg.....
·
Linux 进程家族树 生成三个子进程不生成孙子进程
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. 绘制进程家族树
更多推荐
已为社区贡献1条内容
所有评论(0)