У меня есть файл C, который выглядит следующим образом:Контроллинг вилы в C
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
pid_t child_pid;
printf ("The PID is %d\n", (int) getpid());
child_pid = fork();
if (child_pid != 0)
{
printf ("this is the parent process, with PID %d\n",
(int)getpid());
printf ("the child's PID is %d\n", (int) child_pid);
}
else
printf ("this is the child process, with PID %d\n",
(int)getpid());
return 0;
}
Мне нужно изменить его, чтобы произвести аа иерархию, которая выглядит как
parent (0)
|
+---> child (1)
|
+---> child (2)
|
+----> child (3)
|
+----> child (4)
|
+----> child (5)
|
В основном древовидную структуру, где каждый второй ребенок делает двух новых детей. Насколько я понимаю, когда процессобрабатывается, каждый процесс будет запускаться одновременно. Добавление fork()
в операторе if
, похоже, работает и корректно создает процессы с 0 по 2, поскольку только родитель создаст новую вилку. Но я понятия не имею, как сделать процесс 2 вилкой, а не 1. Любые идеи?
Считаете ли вы пределы этого процесса? Когда он остановится и почему? Что он будет делать с ОС? (В производной системе unix подумайте о том, чтобы прочитать man-страницу для 'ulimit'.) Просто пытаюсь помочь. – dmckee