Как создать fork () для генерации N элементов (Unix-процессы) - PullRequest
0 голосов
/ 07 октября 2019

Добрый день. В настоящее время я пытаюсь создать код в Unix, чтобы создать поколение N элементов (заданных в качестве параметра). Другими словами, что основной процесс генерирует дочерний процесс (B), а этот процесс B генерирует процесс C и так далее (N раз).

Например, для N = 3 иерархия должна выглядеть как картинка, которую я прикрепляю: процесс A создает B, B создает C, а C создает D. У меня проблемы с адаптацией кода для N элементов.

Я попробовал следующее, но вывод не имеет никакого сходства с тем, что я пытаюсь достичь:

main()
{
    char *a = argv[1]
    int num = atoi(a);

    pid_t result;
    int counter = 0;

    result = fork();


    while (counter < num)   {       //Create hierarchy
        if (result < 0) { 
            printf("fork() call number %d ", counter);
            perror("failed");
            exit(-1);
        }


        if (result) /* parent */
            printf("Counter %d. Process: %d. Parent: %d\n", counter, getpid(), getppid());
        else {      /* child */
            counter++;
            result = fork();

        }
        exit (0);
    }

Изображение для n = 3

Вся помощь очень ценится. Спасибо.

...