Я испытываю много трудностей получать семафоры работать на системе, основанной на Linux в C.Как я могу получить несколько вызовов sem_open, работающих в C?
Процесс моего приложения таково:
- Применения начинается
- вилки Применения в ребенок/parent
- Каждый процесс использует
sem_open
с общим именем для открытия семафора.
Если я создаю семафор перед разветвлением, он отлично работает. Однако требования не позволяют мне это делать. Когда я пытаюсь позвонить sem_open
во второй раз, я получаю ошибку «Разрешение отказа» (через errno
).
Можно ли это сделать каким-либо образом? Или есть способ открыть семафор в одном процессе и использовать механизм общей памяти, чтобы поделиться им с дочерним процессом?
Я использовал версию с четырьмя аргументами, но мои права были неправильными. Похоже, что 'O_RDWR' не является флажком разрешений для использования, несмотря на то, что он отображается в каждом примере, который я мог найти. Огромное спасибо. – 2010-02-19 14:51:35