Это вопрос домашнего задания. Мне нужно написать программу, которая разветвляется 20 раз. Каждый новый процесс добавляет +1 к переменной (целому числу), которая является общей для всех них. Дело в том, что я должен использовать семафоры (IPC). Этот фрагмент кода «работает» — в конце он дает значение 20.
*buf = 0;
for(i=1; i<=20; ++i)
{
if(fork()!=0)
{
*buf += 1;
exit(0);
}
}
РЕДАКТИРОВАТЬ: на основе этого кода я пытаюсь получить вывод, например:
Я ребенок 1.. .
Мне 2 года...
.
.
.
Мне 20 лет...
Один раз сработало (первый раз), а потом порядок стал случайным. Но я не менял код. Что я делаю неправильно?
fork()
. Он возвращает ненулевое значение родительскому процессу; поэтому только ваш родитель увеличивает значение. - person zneak   schedule 03.01.2012