Consenti solo processo padre per oggetto di memoria condivisa unlink

voti
0

Ho un più processi che utilizzi shm_open(possono essere deposto le uova in qualsiasi ordine).

Tutti loro hanno lo stesso flusso di:

int shm_fd = shm_open(pid, O_CREAT | O_EXCL | O_RDWR, S_IRWXU);
if (shm_fd == -1 && errno == EEXIST)
{
    //The object is already created so open it instead..
    shm_fd = shm_open(pid, O_RDWR, S_IRWXU);
}

if (shm_fd != -1)
{
    //do stuff..
}

Quindi, se l'oggetto di memoria condivisa esiste già, solo che l'apre invece di cercare di crearlo. C'è un modo per fare la stessa cosa per se il processo attuale non aprirlo, non scollegare vero?

Lo chiedo perché se ho 3+ processi figlio e un genitore, se uno degli stampi bambini e fa scattare il shm_unlinknon più processi figli possono connettersi e comunicare con il genitore da quando è stato scollegato.

C'è un modo per avere figli processi non riescono a scollegare ciò che essi non hanno creato? IE: come innescare EACCESSper shm_unlinko un trigger qualcosa di simile?

EACCES - Permesso di shm_unlink () l'oggetto di memoria condivisa è stato negato.

È pubblicato 03/12/2019 alle 00:00
fonte dall'utente
In altre lingue...                            


1 risposte

Consenti solo processo padre per oggetto di memoria condivisa unlink

voti
0

Ho un più processi che utilizzi shm_open(possono essere deposto le uova in qualsiasi ordine).

Tutti loro hanno lo stesso flusso di:

int shm_fd = shm_open(pid, O_CREAT | O_EXCL | O_RDWR, S_IRWXU);
if (shm_fd == -1 && errno == EEXIST)
{
    //The object is already created so open it instead..
    shm_fd = shm_open(pid, O_RDWR, S_IRWXU);
}

if (shm_fd != -1)
{
    //do stuff..
}

Quindi, se l'oggetto di memoria condivisa esiste già, solo che l'apre invece di cercare di crearlo. C'è un modo per fare la stessa cosa per se il processo attuale non aprirlo, non scollegare vero?

Lo chiedo perché se ho 3+ processi figlio e un genitore, se uno degli stampi bambini e fa scattare il shm_unlinknon più processi figli possono connettersi e comunicare con il genitore da quando è stato scollegato.

C'è un modo per avere figli processi non riescono a scollegare ciò che essi non hanno creato? IE: come innescare EACCESSper shm_unlinko un trigger qualcosa di simile?

"EACCES - Permesso di shm_unlink () l'oggetto di memoria condivisa è stato negato."

Risposto il 03/12/2019 a 00:00
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more