2012-01-11 8 views
23

Ho installato una configurazione di esecuzione in Eclipse e bisogno di inviare SIGINT (Ctrl +C) per il programma. C'è un codice di pulizia nel programma che viene eseguito dopo SIGINT, quindi premere i pulsanti "Termina" di Eclipse non funzionerà (inviano SIGKILL credo). Digitando CTRL + C nella console non funziona.Invio SIGINT (Ctrl-C) per programmare l'esecuzione in Eclipse Console

Come si invia SIGINT a un processo in esecuzione all'interno di una console Eclipse?

(FWIW sto facendo funzionare un demone ritorto e la necessità ritorto per spegnere correttamente, che si verifica solo su SIGINT)

risposta

7

Se è possibile determinare il processo con un'utilità come ps, è possibile utilizzare kill per inviare un SIGINT. Il programma sarà probabilmente un processo secondario di Eclipse.

kill -s INT <pid> 
+1

In questo momento io uso 'kill -INT \' pgrep python \ '' quindi non devo cercare di trovare i pid, ma anche quello è un po 'ingombrante per cicli rapidi di codice/debug. – vsekhar

+0

Puoi accorciare il tutto in 'pkill -INT python', se non ti dispiace che tutti i processi Python vengano uccisi. – jordanm

+1

Quindi il punto della domanda è che kill + pgrep o pkill sono strumenti contundenti (e in effetti ci sono altri processi Python in esecuzione che si riempiono di cianfrusaglie). Spero in un approccio più fine e CTRL-C via Eclipse sembra che dovrebbe essere possibile. – vsekhar

1

È possibile inviare il comando tramite una riga:

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

ottenere l'ID di processo e di inviare il segnale SIGINT

+6

Più breve: 'pkill -SIGINT -f ProgrammName' –

0

Solo per ragioni di completezza:

Ctrl + Z funziona per me (su Windows).