У меня есть этот код, который в основном делает P на семафоре с номером sem
. Семафор находится в пуле. Проблема в том, что иногда я получаю Invalid argument
, и я не могу понять, почему.Semop: Недопустимый аргумент
bool sem_p(key_t key, int sem){
int semid = semget(key, sem, 0666);
struct sembuf sb = {sem, -1, 0};
if(semop(semid, &sb, 1) == -1){
perror("sem p");
printf("sem %d\n", sem);
return FALSE;
}
return TRUE;
}
Когда эта функция вызывается, она печатает
sem p: Invalid argument
Набор семафоров не существует, или semid меньше нуля, или nsops имеет неположительное значение. Прочтите руководство :) –
@ VladLazarenko Semid возвращает успех, что еще я должен проверить? – user3266496