Sta alleen bovenliggende proces ontkoppelen gedeeld geheugen object

stemmen
0

Ik heb een meervoudige processen die gebruik shm_open(ze kunnen worden voortgebracht in willekeurige volgorde).

Allemaal hebben ze dezelfde stroom als:

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

Dus als het gedeelde geheugen object al bestaat, het opent het gewoon in plaats van te proberen om het te maken. Is er een manier om hetzelfde te doen want als het huidige proces deed niet open, maak je geen koppeling te verwijderen?

Ik vraag want als ik heb 3 + kind processen en één ouder, als een van de kinderen stempels en triggers het shm_unlinkniet meer onderliggende processen kunnen verbinden en te communiceren met de ouders, omdat het werd losgekoppeld.

Is er een manier om kinderen processen niet te ontkoppelen wat ze niet te maken hebben? IE: Hoe te activeren EACCESSvoor shm_unlinkof trekker iets dergelijks?

EACCES - Toestemming om shm_unlink () de gedeelde geheugen object is geweigerd.

De vraag is gesteld op 03/12/2019 om 00:00
bron van user
In andere talen...                            


1 antwoorden

Sta alleen bovenliggende proces ontkoppelen gedeeld geheugen object

stemmen
0

Ik heb een meervoudige processen die gebruik shm_open(ze kunnen worden voortgebracht in willekeurige volgorde).

Allemaal hebben ze dezelfde stroom als:

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

Dus als het gedeelde geheugen object al bestaat, het opent het gewoon in plaats van te proberen om het te maken. Is er een manier om hetzelfde te doen want als het huidige proces deed niet open, maak je geen koppeling te verwijderen?

Ik vraag want als ik heb 3 + kind processen en één ouder, als een van de kinderen stempels en triggers het shm_unlinkniet meer onderliggende processen kunnen verbinden en te communiceren met de ouders, omdat het werd losgekoppeld.

Is er een manier om kinderen processen niet te ontkoppelen wat ze niet te maken hebben? IE: Hoe te activeren EACCESSvoor shm_unlinkof trekker iets dergelijks?

"EACCES - Toestemming om shm_unlink () de gedeelde geheugen object is geweigerd."

antwoordde op 03/12/2019 om 00:00
bron van user

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