Me pregunto si esta es la forma correcta de ejecutar un proceso del sistema y separarlo del padre, aunque permitiendo que el padre salga sin crear un zombie y/o matar al niño proceso. Actualmente estoy usando el módulo de subproceso y hacer esto ...Python genera un subproceso secundario, se separa y sale
os.setsid()
os.umask(0)
p = subprocess.Popen(['nc', '-l', '8888'],
cwd=self.home,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
os.setsid() cambia el grupo de procesos, que creo que es lo que permite que el proceso continúe funcionando cuando está salidas de los padres, ya que ya no se pertenece al mismo grupo de procesos.
¿Es correcto y también es esta una manera confiable de realizar esto?
Básicamente, tengo una utilidad de control remoto que se comunica a través de sockets y permite iniciar procesos de forma remota, pero tengo que asegurarme de que si el control remoto muere, los procesos que inició continúen sin verse afectados.
Estaba leyendo acerca de las horquillas dobles y no estoy seguro si esto es necesario y/o subprocesamos.¿Por qué close_fds de alguna manera se ocupa de eso y todo lo que se necesita es cambiar el grupo de procesos?
Gracias.
Ilya
Eche un vistazo a http://code.activestate.com/recipes/278731-creating-a-daemon-the-python-way/ http://www.python.org/dev/peps/pep- 3143/# reference-implementation – sehe