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