我有这段代码,它基本上在带有数字的信号量上生成一个 P sem
。信号量在池中。问题是有时我得到Invalid argument
但我不知道为什么。
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