Üdv! Van egy nagyon egyszerű kérdésem. Csináltam egy egyszerű valamit ami a háttérben futna, maga a program az egy végtelen ciklus, és beraktam egy shell scriptbe, ami a biztonság kedvéért szintén egy végtelen ciklus, és a programot indítja újra.
pl: teszt.sh
while [ 1 ]; do /valahol/teszt.py; done
teszt.py
#!/usr/bin/env python
while 1: print "valami"
namost ha én ezt le akarnám állítani úgy, hogy killall teszt.sh
, akkor a shell script megáll, de a program fut tovább
nem akartam pidek lementésével szórakozni, ill sok időt szánni a dologra (ezért írtam így meg).
Namost, megoldottam a problémát azzal, hogy a python program letárolja a saját pid-jét, és azt is megölöm, csupán kíváncsi vagyok, hogy miért nem hal meg a programom "magától", ha az azt indító folyamat meghal? Azért vagyok kíváncsi, mert máskor pont azt tapasztaltam, hogy folyamatok sora hal meg, ha a szülő kiesik, pl kilövöm a terminált, akkor a benne futó alkalmazás nem fut tovább (még a háttérben& indított sem)
- 1223 megtekintés
Hozzászólások
Szerintem ez azért van, mert a python beállítja magának azt, amit a shell normálisan csak akkor csinál ha nohup-al indítod a processzt.
Amikor indítasz egy új processzt akkor az defaultban örökli a szülőtől ezeket a signal block meg signal ignore bitmap-ket.
Viszont ezt az adott processz modosíthatja és úgy néz ki a python így is tesz.
Van itt ez a kis progi: http://brokestream.com/procstat.html
Ezzel meg tudod nézni ezeket a map-eket egy adott processzhez.
Szóval annyi van hogy az a processz ignorálja a SIGHUP signal-t, amit akkor kap amikor a szülője kilép.
- A hozzászóláshoz be kell jelentkezni
Nah elszórakoztam ezzel.
Lényag hogy nem azért van, hanem azért mert a bash nem is küld SIGHUP-ot.
- A hozzászóláshoz be kell jelentkezni