Newsgroup: it.comp.java
Titolo: control+c al process

Salve a tutti
sto cercando il modo di mandare control+c ad un processo
----------------------------------------------
Process process=Runtime.getRuntime().exec(comando);
BufferedReader reader=new BufferedReader(new
InputStreamReader(process.getInputStream()));
----------------------------------------------
dopo aver preso l'output del programma lanciato vorrei poterlo terminare
(per la cronaca il programma lanciato e' snort e rimane in esecuzione
finche' non schiaccio control+c dal terminale)
cerco qualcosa del genere per terminare il processo 
process.getOutputStream().write("cntrl-c");
o qualcosa che mi consigliate voi
grazie 2000
-- 
Riccardo (
http://termitano.myminicity.com
, visitate e se volete partecipate
sul 
http://www.iltermitano.it/
)
A computer is like an air conditioner,
it stops working when you open Windows.
Registered Linux user #457776

 o qualcosa che mi consigliate voi
Credo tu possa essere interessato ai segnali da inviare ai processi
http://olympus.het.brown.edu/cgi-bin/man/man2html?snort+8
Il paragrafo "notes".
Per inviare segnali con java, non so.
Enrico

Enrico Bassetti wrote:

ma per mandare i segnali al process, non dovrei aspettare che finisca?
mi piacerebbe utilizzare control+c


 mi piacerebbe utilizzare control+c
Che equivale, nella console almeno, ad inviare un segnale (non ricordo
quale).
Ripeto, secondo me è più probabile che tu trova il modo di inviare un
segnale piuttosto che un comando da console.
Enrico

 grazie 2000
Tu dici che vuoi mandare il CTRL+C al processo ma secondo me potresti 
volere qualcos'altro.
Se Windows funziona piu' o meno come UNIX succede questo:
Il CTRL+C non arriva al processo, il CTRL+C arriva alla shell (cmd.exe) 
questa decide di mandare un segnale di TERM al processo.
Quando il segnale di TERM arriva ad un processo questi possono anche 
ignorarlo ma di norma non lo fanno. Se non lo ignorano vengono interrotti.
Nota: potrei sbagliarmi sul nome del segnale.
Quindi se quello che volevi dire era: Voglio interrompere il processo 
quello che devi fare � chiamare destroy() cos�:
   process.destroy();
Guardati il JavaDoc di java.lang.Process#destroy() per ulteriori 
informazioni.
-- 
Andrea Francia
http://www.andreafrancia.it/

RicK_Murphy wrote:
non so se stilisticamente e' corretto
ma per il mio scopo funziona
-----------------
Runtime.getRuntime().exec("killall snort");
-----------------
grazie


 -----------------
Se il tuo problema e uccidere un processo che non un processo figlio del 
tuo programma e se sei sotto Windows puoi usare la libreria winp di 
Kohsuke Kawaguchi 
https://winp.dev.java.net/
-- 
Andrea Francia
http://andreafrancia.blogspot.com/2008/07/colinux-linux-dentro-windows.html

 -----------------
allora fai cosi':
fatti uno script di lancio che salva il PID di snort in un file, poi ti
fai uno script per fermarlo che fa il kill (non killall) di quel PID
usi runtime.exec per eseguire gli script

Andrea Francia alle Thursday 02 October 2008 19:44 ha scritto:
scusatemi per la dimenticanza
uso linux (debian)


 fai uno script per fermarlo che fa il kill (non killall) di quel PID
perche' dovrei usare kill piuttosto che killall?
non ha processi figli :)
e con killall me ne esco subito mettendo il nome del processo ;)



killall uccide tutti i processi con quel nome, figli o non figli
nel tuo caso funziona uguale probabilmente, anche se non e'
stilisticamente corretto