С в Linux

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: С в Linux

Re: С в Linux

Romeo » 11 апр 2018, 20:01

Судя по заданию, дочерние процессы должен порождать только главный процесс, дочерние процессы не должны порождать поддочерние процессы. Значит все порождения должны происходить в том случае, если первый fork был > 0. Ну и в количестве вызовов fork здесь тоже как бы нехватка. Их должно быть всего 7 штук: один сразу и ещё 6 внутри проверки, что первый возвращённый был > 0.

С в Linux

Иван Петров12 » 11 апр 2018, 18:45

Процесс 1 порождает 7 потомков. Три из них делают, какое то действие, неважно какое
Помогите исправить

Код: Выделить всё

#include <sys/types.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>     
#include <stdlib.h>     
void main(void)
{ int pid2, pid3, st; 
printf("Process 1, pid = %d:\n", getpid());
pid2 = fork();
if (pid2 == 0) 
{ printf("Process 2, pid = %d:\n", getpid());
pid3 = fork();
if (pid3 == 0) 
{ printf("Process 3, pid = %d:\n", getpid());
sleep(2);
printf("Process 3: end\n");
} 
if (pid3 < 0) printf("Cann't create process 3: error %d\n", pid3);
wait(&st);
printf("Process 2: end\n");
}
else 
{ if (pid2 < 0) printf("Cann't create process 2: error %d\n", pid2);
wait(&st);
printf("Process 1: end\n");
}
exit(0);     
}

Вернуться к началу