Autoriser seulement les processus parent à l'objet de mémoire partagée unlink

voix
0

J'ai plusieurs processus que les utilisations shm_open(ils peuvent être frayé dans un ordre quelconque).

Tous ont le même flux que:

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..
}

Donc, si l'objet de mémoire partagée existe déjà, il ouvre juste au lieu d'essayer de le créer. Est-il possible de faire la même chose pour si le processus actuel ne pas ouvrir, ne pas supprimer le lien?

Je demande parce que si je 3+ processus enfants et l' un des parents, si l' un des enfants meurt et déclenche les shm_unlinkprocessus enfants ne peuvent plus se connecter et de communiquer avec les parents depuis qu'il a été dissociées.

Est - il possible d'avoir des processus enfants ne parviennent pas à délier ce qu'ils n'ont pas créé? IE: Comment déclencher EACCESSpour shm_unlinkou déclencher quelque chose de similaire?

« EACCES - L'autorisation de shm_unlink () l'objet de mémoire partagée a été refusée. »

Créé 03/12/2019 à 00:00
source utilisateur
Dans d'autres langues...                            


1 réponses

Autoriser seulement les processus parent à l'objet de mémoire partagée unlink

voix
0

J'ai plusieurs processus que les utilisations shm_open(ils peuvent être frayé dans un ordre quelconque).

Tous ont le même flux que:

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..
}

Donc, si l'objet de mémoire partagée existe déjà, il ouvre juste au lieu d'essayer de le créer. Est-il possible de faire la même chose pour si le processus actuel ne pas ouvrir, ne pas supprimer le lien?

Je demande parce que si je 3+ processus enfants et l' un des parents, si l' un des enfants meurt et déclenche les shm_unlinkprocessus enfants ne peuvent plus se connecter et de communiquer avec les parents depuis qu'il a été dissociées.

Est - il possible d'avoir des processus enfants ne parviennent pas à délier ce qu'ils n'ont pas créé? IE: Comment déclencher EACCESSpour shm_unlinkou déclencher quelque chose de similaire?

« EACCES - L'autorisation de shm_unlink () l'objet de mémoire partagée a été refusée. »

Créé 03/12/2019 à 00:00
source utilisateur

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