Изпитвам много трудности да накарам семафорите да работят на Linux базирана система в C.
Процесът на моето кандидатстване е следният:
- Приложението стартира
- Приложението се разклонява в дете/родител
- Всеки процес използва
sem_open
с общо име, за да отвори семафора.
Ако създам семафора преди разклоняването, той работи добре. Изискванията обаче ми пречат да го направя. Когато се опитам да извикам sem_open
за втори път, получавам грешка „Разрешението е отказано“ (чрез errno
).
Възможно ли е да стане това по някакъв начин? Или има някакъв начин да отворите семафора в един процес и да използвате механизъм за споделена памет, за да го споделите с дъщерния процес?