Я испытываю большие трудности с тем, чтобы заставить Семафоры работать на системе на основе Linux в C.
Процесс моего приложения такой:
- Приложение запускается
- Приложение разветвляется на дочерний / родительский
- Каждый процесс использует
sem_open
с общим именем для открытия семафора.
Если я создаю семафор перед разветвлением, он работаетхорошо.Однако требования мешают мне сделать это.Когда я пытаюсь вызвать sem_open
во второй раз, я получаю сообщение об ошибке «Отказано в доступе» (через errno
).
Возможно ли это сделать каким-либо образом?Или есть ли способ открыть семафор в одном процессе и использовать механизм общей памяти, чтобы поделиться им с дочерним процессом?