【发布时间】:2022-01-13 00:42:13
【问题描述】:
我只需要知道我是否正确。在将要进行一次循环切换之前使用这个 forks(),进程数应该是 5 对吧?如果我要添加更多的 forks(),这个数字会增加到 9,17 等?在这种情况下,我很清楚这个进程是如何创建新进程的,下一个 forks() 是否也只从子进程或父进程创建新进程,因为我无法正确绘制它,因为我不知道如何检查创建新进程的进程那些。 也许这是一个显而易见的问题,但我想我错过了一些东西,我想确保我能很好地理解它。
谢谢!
Is it gonna look like this? (i made a draw)
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
void processTree()
{
pid_t pid_t = getpid();
int tmp = pid_t;
printf("PID : %d\n",pid_t);
char buffer [128];
for(int i = 0; i < 1; i++)
{
int pid_child;
fork();
fork(); //if i am gonna add more fork there will be 9,17,etc processes?
switch(pid_child = fork())
{
case -1:
exit(-1);
case 0:
pid_t = pid_child;
printf("UID: %d, GID: %d, PID: %d, PPID: %d\n", getuid(), getgid(), getpid(), getppid()); fflush(stdout);
break;
}
}
int main()
{
processTree();
return 0;
}
【问题讨论】:
-
不要为 C 问题标记 C++。
-
对不起,我的错...
-
贴出的代码无法编译!请发布可编译的代码
-
它正在为我编译...