Доброго времени суток. Разбираюсь с семафорами, в связи с чем возник такой вопрос - функция sem_post должен увеличивать значение семафора на единицу, однако это перестает работать, когда я пробую работать с несколькими процессами. Например:
switch(proc)
{
case -1:
fprintf(stderr, "Все плохо\n" );
break;
case 0:
fprintf(stderr, "Это потомок\n" );
sem_init(&sem, 0, 1);
sem_post(&sem);
sem_post(&sem);
sem_post(&sem);
break;
default:
waitpid(proc,0,0);
fprintf(stderr, "Это родитель\n" );
sem_getvalue(&sem, &value);
printf("%d\n",value);
}
В программе без fork все нормально работает, т.е. если я сделал sem_post 3 раза, то получил бы значение 4 и т.п. Подскажите пожалуйста, куда копать