Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > Отрицательное значение семафора


Автор: Animator 23.4.2010, 07:19
Почему нельзя инициализировать семафор отрицательным значением?
Код

union semun

 int val;
 struct semid_ds *buf;
 ushort *array;
} sem;
sem.val = -3;
semctl(semid, 0, SETVAL, sem);
printf("Sem = %d", semctl(semid, 0, GETVAL));

возвращает 0. тогда как при положительных значениях sem.val возвращается правильное значение.

Автор: MAKCim 23.4.2010, 10:47
проверять надо результат работы первого semctl
должен возвратить ERANGE в errno
почему не знаю, но значение val должно лежать в пределах от 0 до SEMVMX включительно
для linux SEMVMX = 32767

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)