Portál AbcLinuxu, 10. května 2025 05:28
Řešení dotazu:
Dost záleží na tom jaká je vlastně architektura tvé aplikace, popiš trochu podrobněji jak si představuješ spolupráci mezi procesy a jak je hodláš spouštět, zda-li např. všechny procesy využívající sdílenou pamět nebudou jen potomci jednoho rodiče.
Nástřel jednoho z možných řešení:
2) Jenže jiný proces pak může dostat původní PID a tak "bude běžet"
Ošetřit zda-li se jedná opravdu o ten původní proces není přeci problém.
3) Takový SIGKILL ale nechytím ...
Samozřejmě, neoprávněný přístup do paměti taky neošetříš, ale měl by jsi korektně ošetřit např. SIGTERM a vše ostatní co můžeš.
Nepopsal jsi architekturu tvé aplikace, takže ti nemůžeme konkrétně poradit.
Navíc si můžeš zjistit, které PID založilo sdílenou paměť, případně kolik procesů ji používá, pokud žádný, tak hned víš, že proces se ukončil nekorektním způsobem. Možných řešení je více.
Ošetřit zda-li se jedná opravdu o ten původní proces není přeci problém.
Na to jsem zvědavý. Kromě ptracnutí hlídaného procesu mě napadá žádný zaručený způsob. Vás ano?
neoprávněný přístup do paměti taky neošetříš
Ale ošetříš: sigaltstack(2), sigaction(2).
Vzhledem k tomu, že je původní proces plně pod jeho kontrolou, tak není problém, aby dal okolí vědět, že je to právě on např. periodická aktualizace poslední modifikace souboru, ve kterém je uložené PID.
S ošetřením neoprávněného přístupu do paměti to podle mě není tak jednoznačné, může nastat kdekoliv, třeba zrovna v ošetření signálu, případně si může porušit datovou strukturu a program se může začít chovat neočekávaně. Chtěl jsem tím jen říct, že stejně nikdy nemůže spoléhat na to, že proces "zemře" korektně, ale vždy musí počítat s tím, že ho jádro bez milosti sestřelí a nenechá ho po sobě ani uklidit. A je třeba, aby následně spuštěné instace tohoto procesu tímto nebyly poznamenány.
spolehlivé řešení ... nikoliv 99,99 %Zajímalo by mne, kolik procent je podle Vás spolehlivost.
ipcs
sluzi na vypisanie informacii o prostriedkoch na medziprocesorovu komunikaciu (ipc) a
ipcrm
sluzi na odstranenie ipc.[...] a nepřipadá mi správné, abych ji použil, když pak třeba patří jiné instanci?Viz IPC_PRIVATE coby klíč.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.