Сколько процессов создается при запуске следующей программы? не могу решить. Буду признателен, если вы поможете
int main()
{
int i;
for (i=fork(); i<2; i++ )
fork();
}
Сколько процессов создается при запуске следующей программы? не могу решить. Буду признателен, если вы поможете
int main()
{
int i;
for (i=fork(); i<2; i++ )
fork();
}
fork() создает дочерний процесс, создавая другой экземпляр родительского процесса. Он возвращает 0 дочернему элементу и PID дочернего элемента родительскому.
В этом случае, когда выполняется i = fork(), родительскому процессу присваивается i в качестве PID дочернего процесса, который, скорее всего, больше 1. Цикл for в родительском процессе не будет выполняться. выполнить хотя бы один раз, так как i ‹ 2 завершится ошибкой. На данный момент есть два процесса P и C1 (дочерний)
После того, как родитель выполнил ответвление, дочерний элемент получает в качестве возвращаемого значения 0, i = 0. Это означает, что условие i ‹ 2 выполнено успешно. Ребенок выполняет fork() в теле цикла, создавая C2. Значение i как в C1, так и в C2 равно 0. i увеличивается до 1.
C1 и C2 выполняют i ‹ 2, это условие выполнено успешно. Вилка выполняется обоими. C3 порождается C1, а C4 - C2.
значение i увеличивается до 2. i ‹ 2 терпит неудачу. Все они выходят из петли
Подводя итог, в этой программе создано 4 дочерних процесса. Вы можете попробовать это с помощью следующей программы, где вы увидите 5 распечатанных PID.
#include <stdio.h>
main()
{
int i = 0;
for (i = fork(); i < 2; i++)
fork();
printf("Hello World i %d\n", getpid());
}