程序是否使用 fork 和 processes 计算一切正确?

Is program count everything right with fork and processes?

我只需要知道我是否正确。在将要进行一次的循环中的切换之前使用这个 forks(),进程数应该是 5,对吗?如果我要添加更多 forks(),这个数字会增加到 9,17 等等?在这种情况下,我是 courius,这个进程是如何创建新进程的,下一个 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;
}

for 循环迭代一次,所以它是无关紧要的。该节目从一个进程开始,该进程正在执行 main(),它执行

fork();

现在有两个进程。两个进程中的每一个都做一个

fork();

现在有四个进程。这四个进程中的每一个都做一个

switch(pid_child = fork())

现在有八个进程。

显示的程序之前没有做任何其他事情,或者之后没有做任何事情 fork() 是 material,相对于最后的进程总数。

总计:八个进程。