Я пытаюсь получить висячие семафоры. Я написал программу, которая занимается семафорами и в которой у меня есть эта функция для создания единого семафора:Почему семафор извлекается и не создается?
int semcreate()
{
semp = semget(ftok("./output.txt", 'a'),1,IPC_CREAT|IPC_EXCL|0664);
if(semp == -1) /*Semaphore exists, fetch*/
{
printf("Semaphore fetched\n");
semp = semget(ftok("./output.txt", 'a'), 1, 0);
}
else if(semp>=0) /*Semaphore created here*/
{
printf("Semaphore created\n");
seminit(); /* Initialize semaphore*/
}
return 1;
}
Когда я запускаю эту программу из двух отдельных терминалов, как экземпляры печати Semaphore fetched
. Это правильное поведение? Зачем?