Hice una pregunta para saber cómo obtener múltiples líneas de mensaje desde el módulo de subproceso de Python.
El problema es que en el transcurso de las pruebas, tuve que matar el proceso de Python que ejecuta el proceso gnuchess. El uso de ^ c en la línea de comando parece matar el proceso de Python, pero no el proceso gnuprocess.
Por matar gnuchess, recibo el pid con ps aux | grep gnuchess y ejecuta kill -9 PID . ¿Hay otros métodos para matar el proceso de Python y Gnuchess?
pkill
para matar a un proceso por el nombre, por lo que sups aux | grep gnuchess
ykill -9 PID
solo puede llegar a serpkill -9 gnuchess
Respuestas:
Existe un método estándar, si los programas cooperan. Ejecute
kill -- -42
donde 42 es el pid del proceso padre. Esto envía una señal a todos los procesos en el grupo de procesos liderados por el proceso 42 (el signo menos antes del pid significa grupo de procesos).Normalmente, si ejecuta su script de Python desde un indicador de comandos de shell y simplemente se bifurca
gnuchess
, los dos procesos deben permanecer en el mismo grupo de procesos. Pero este no parece ser el caso, ya que Ctrl+ CenvíaSIGINT
a todo el grupo de procesos en primer plano.Gnuchess podría estar en su propio grupo de procesos porque se convirtió en un líder de sesión (pero no sé por qué haría esto), o porque lo bifurcaste dos veces (python bifurca un caparazón que bifurca a gnuchess). Probablemente se pueda evitar una doble bifurcación, pero no puedo decirte cómo sin ver tu código.
Una forma razonablemente confiable y compatible con POSIX de encontrar el pid del
gnuchess
proceso esLas variantes específicas de Unix pueden tener mejores formas de lograr esto, como
pgrep
.fuente
Tratar:
fuente