Nur lassen unlink Shared-Memory-Objekt übergeordneten Prozess

stimmen
0

Ich habe einen mehr Prozesse , dass Anwendungen shm_open(sie können in beliebiger Reihenfolge hervorgebracht werden).

Alle von ihnen haben den gleichen Fluss wie:

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

Also, wenn das Shared-Memory-Objekt bereits vorhanden ist, öffnet es nur anstatt zu versuchen, es zu schaffen. Gibt es eine Möglichkeit das gleiche für wenn der aktuelle Prozess es nicht geöffnet zu tun, es nicht entkoppeln?

Ich frage , weil , wenn ich 3 + Kind - Prozesse und einen Elternteil, wenn eines der Kinder sterben und löst die shm_unlinknicht mehr untergeordneten Prozesse verbinden und kommunizieren mit den Eltern , da sie nicht verknüpft wurden.

Gibt es einen Weg , um Kinder Prozesse haben nicht zu entkoppeln , was sie nicht selbst erstellt? IE: Wie auslösen EACCESSfür shm_unlinkähnliche oder Trigger etwas?

EACCES - Die Erlaubnis zum shm_unlink () das Shared-Memory-Objekt wurde verweigert.

Veröffentlicht am 03/12/2019 um 00:00
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

Nur lassen unlink Shared-Memory-Objekt übergeordneten Prozess

stimmen
0

Ich habe einen mehr Prozesse , dass Anwendungen shm_open(sie können in beliebiger Reihenfolge hervorgebracht werden).

Alle von ihnen haben den gleichen Fluss wie:

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

Also, wenn das Shared-Memory-Objekt bereits vorhanden ist, öffnet es nur anstatt zu versuchen, es zu schaffen. Gibt es eine Möglichkeit das gleiche für wenn der aktuelle Prozess es nicht geöffnet zu tun, es nicht entkoppeln?

Ich frage , weil , wenn ich 3 + Kind - Prozesse und einen Elternteil, wenn eines der Kinder sterben und löst die shm_unlinknicht mehr untergeordneten Prozesse verbinden und kommunizieren mit den Eltern , da sie nicht verknüpft wurden.

Gibt es einen Weg , um Kinder Prozesse haben nicht zu entkoppeln , was sie nicht selbst erstellt? IE: Wie auslösen EACCESSfür shm_unlinkähnliche oder Trigger etwas?

"EACCES - Die Erlaubnis zum shm_unlink () das Shared-Memory-Objekt wurde verweigert."

Beantwortet am 03/12/2019 um 00:00
quelle vom benutzer

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