Voglio avviare un processo da Java, leggere l'output e ottenere il codice di ritorno. Ma mentre è in esecuzione, voglio essere in grado di cancellarlo. Comincio dal lancio del processo:Eseguire il programma esterno da Java, leggere l'output, consentire l'interruzione
ProcessBuilder pb = new ProcessBuilder(args);
pb.redirectErrorStream(true);
Process proc = pb.start();
Se chiamo proc.waitFor(), non posso fare nulla fino a quando le uscite di processo. Quindi suppongo di aver bisogno di qualcosa del genere:
while (true) {
see if process has exited
capture some output from the process
decide if I want to cancel it, and if so, cancel it
sleep for a while
}
È giusto? Qualcuno può darmi un esempio di come farlo in Java?
Cosa succede se non c'è uscita per un po '?Questo non si bloccherà su br.readLine() fino a quando non ci sarà una riga pronta per la lettura? Non sono sicuro di quanto o quanto poco il mio processo invierà. –
Punto di partenza. È possibile creare un thread separato per analizzare se il processo deve fermarsi. Potrebbe essere eseguito parallelamente al ciclo while e distruggere il processo se si blocca per un po 'di tempo (o qualsiasi altra condizione). –
(intendevo "punto buono") –