dovolit pouze rodičovský proces Chcete-li odpojit sdílené paměti objektu

hlasů
0

Mám několik procesů, které používá shm_open(mohou být třel v libovolném pořadí).

Všechny z nich mají stejný průtok jako:

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

Takže v případě, že sdílený objekt paměti již existuje, právě to jej otevře namísto snahy vytvořit. Existuje způsob, jak udělat to samé pro jestliže současný proces se to neotevře, nemusí to odpojit?

Ptám se proto, jestli mám 3+ podřízené procesy a jeden z rodičů, je-li jeden z dětských razítek a spustí shm_unlinkžádné další podřízené procesy mohou připojit a komunikovat s rodiči, protože byl odpojen.

Existuje způsob, jak mít děti procesy nedaří odpojit, co nevytvořil? IE: Jak spustit EACCESSna shm_unlinknebo trigger něco podobného?

„EACCES - Povolení k shm_unlink () sdílený objekt paměti byl odepřen.“

Položena 03/12/2019 v 00:00
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

dovolit pouze rodičovský proces Chcete-li odpojit sdílené paměti objektu

hlasů
0

Mám několik procesů, které používá shm_open(mohou být třel v libovolném pořadí).

Všechny z nich mají stejný průtok jako:

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

Takže v případě, že sdílený objekt paměti již existuje, právě to jej otevře namísto snahy vytvořit. Existuje způsob, jak udělat to samé pro jestliže současný proces se to neotevře, nemusí to odpojit?

Ptám se proto, jestli mám 3+ podřízené procesy a jeden z rodičů, je-li jeden z dětských razítek a spustí shm_unlinkžádné další podřízené procesy mohou připojit a komunikovat s rodiči, protože byl odpojen.

Existuje způsob, jak mít děti procesy nedaří odpojit, co nevytvořil? IE: Jak spustit EACCESSna shm_unlinknebo trigger něco podobného?

„EACCES - Povolení k shm_unlink () sdílený objekt paměti byl odepřen.“

Odpovězeno 03/12/2019 v 00:00
zdroj uživatelem

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