che sto vivendo un sacco di difficoltà a ottenere semafori per lavorare su un sistema basato su Linux in C.Come posso ricevere più chiamate a sem_open che funzionano in C?
Il processo di mia domanda è tale:
- Applicazione inizia
- forchette applicazione in bambino/genitore
- Ogni processo utilizza
sem_open
con un nome comune per aprire il semaforo.
Se creo il semaforo prima della foratura, funziona correttamente. Tuttavia, i requisiti mi impediscono di farlo. Quando provo a chiamare lo sem_open
per la seconda volta, visualizzo un errore "Autorizzazione negata" (tramite errno
).
È possibile farlo in qualche modo? O c'è un modo per aprire il semaforo in un unico processo e utilizzare un meccanismo di memoria condivisa per condividerlo con il processo figlio?
Stavo usando la versione a quattro argomenti, ma le mie autorizzazioni non erano corrette. Sembra che 'O_RDWR' non sia il flag di permessi da usare, nonostante sia mostrato in ogni esempio che ho trovato. Grazie mille. –