Zastanawiam się, czy to jest poprawny sposób na wykonanie procesu systemowego i odłączenie od rodzica, chociaż pozwala rodzicowi wyjść bez tworzenia zombie i/lub zabicia dziecka proces. Jestem obecnie za pomocą modułu subprocess i robi to ...Python odradza się podprocesowi podrzędnemu, oddziela i kończy
os.setsid()
os.umask(0)
p = subprocess.Popen(['nc', '-l', '8888'],
cwd=self.home,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
os.setsid() zmienia grupę procesów, które moim zdaniem jest to, co pozwala kontynuować proces uruchomiony, gdy jest wyjść macierzystych, ponieważ nie jest już należy do tej samej grupy procesów.
Czy to jest poprawne i czy jest to niezawodny sposób na wykonanie tego?
Zasadniczo mam narzędzie do zdalnego sterowania, które komunikuje się za pośrednictwem gniazd i pozwala na zdalne uruchamianie procesów, ale muszę się upewnić, że w przypadku zgonu pilota, uruchomione procesy będą nadal działać bez zakłóceń.
Czytałem o podwójnych widłach i nie jestem pewien, czy jest to konieczne i/lub podproces.POpen close_fds w jakiś sposób się tym zajmuje, a wszystko, czego potrzeba, to zmienić grupę procesów?
Dzięki.
Ilya
Zajrzyj na http://code.activestate.com/recipes/278731-creating-a-daemon-the-python-way/ http://www.python.org/dev/peps/pep- 3143/# referencja-implementacja – sehe