Unix Man (Справочное руководство)


SEMOP(2) - часть 3


[EINVAL] Значение аргумента semid не является корректным идентификатором множества семафоров. [EFBIG] Номер семафора sem_num меньше нуля или больше или равен количеству семафоров в множестве, определяемом идентификатором semid. [E2BIG] Количество заданных операций nsops больше максимально допустимого в системе. [EACCES] У вызывающего процесса нет прав на выполнение операции [см. ]. [EAGAIN] Выполнение операции привело бы к приостановке вызывающего процесса, а выражение (semflg & IPC_NOWAIT) истинно. [ENOSPC] Превышается максимально допустимое количество процессов, устанавливающих флаг SEM_UNDO. [EINVAL] Превышается максимально допустимое количество семафоров, для которых вызывающий процесс устанавливает флаг SEM_UNDO. [ERANGE] Значение семафора semval превышает максимально допустимое системой. [ERANGE] Значение semadj превышает максимально допустимое системой. [EFAULT] Аргумент sops указывает за пределы отведенного процессу адресного пространства.

При успешном выполнении системного вызова значение sempid для каждого семафора, заданного массивом структур, на который указывает sops, устанавливается равным идентификатору (номеру) вызывающего процесса.

СМ. ТАКЖЕ


, , , , , .

ДИАГНОСТИКА


Если системный вызов semop завершается неудачей из-за получения сигнала, то вызывающему процессу возвращается -1, а переменной errno присваивается значение EINTR. Если системный вызов semop завершается неудачей из-за удаления из системы идентификатора множества семафоров semid , то возвращается -1 и errno присваивается значение EIDRM.

При успешном завершении результат равен 0; в случае ошибки возвращается -1, а переменной errno присваивается код ошибки.

СЮРПРИЗЫ


В данной реализации аргумент sops должен быть массивом структур, а не указателем на массив.




Начало  Назад  Вперед