2012-01-11 10 views
23

He fijado una configuración de ejecución de Eclipse y necesito enviar SIGINT (Ctrl +C) para el programa. Hay un código de limpieza en el programa que se ejecuta después de SIGINT, por lo que presionar los botones "Terminar" de Eclipse no funcionará (ellos envían SIGKILL, creo). Escribir CTRL + C en la consola tampoco funciona.SIGINT (Ctrl-C) para ejecutar el programa del Eclipse consola

¿Cómo envío SIGINT a un proceso que se ejecuta dentro de una consola Eclipse?

(Fwiw estoy corriendo un demonio trenzado y necesito trenzado para apagar correctamente, lo que sólo se produce en SIGINT)

Respuesta

7

Si puede determinar el proceso con una utilidad como ps, puede usar kill para enviar una SIGINT. El programa probablemente será un proceso secundario de eclipse.

kill -s INT <pid> 
+1

Ahora uso 'kill -INT \' pgrep python \ '' así que no tengo que perder el tiempo encontrando pids, pero incluso eso es un poco engorroso para ciclos rápidos de depuración/código. – vsekhar

+0

Puedes acortar eso a 'pkill -INT python', si no te importa que se maten todos los procesos de python. – jordanm

+1

Así que el punto de la pregunta es que kill + pgrep o pkill son instrumentos contundentes (y de hecho hay otros procesos de python en ejecución que serán eliminados). Estoy esperando un enfoque más refinado, y CTRL-C a través de Eclipse parece que debería ser posible. – vsekhar

1

Puede enviar el comando a través de una línea:

kill -SIGINT $(ps aux | grep ProgrammName | grep -v grep | awk '{print $2}') 

obtener el ID de proceso y de enviar la señal sigint

+6

Más corto: 'pkill -SIGINT -f ProgrammName' –

0

Sólo por el bien de la integridad:

Ctrl + Z funciona para mí (en Windows).

Cuestiones relacionadas