externen Prozess schließen, wenn Programm geschlossen wird

Eule

Mitglied
Hallo Forum,

ich stehe vor dem Problem, dass wenn ich externe Programme aufrufe und diese per Ein- und Ausgabe steuern kann. Das funktioniert auch einwandfrei. Nur wenn ich das Programm beende, werden diese Programme nicht mit beendet.

Dieser Thread hat genau das gleiche Problem, nur dass es sich bei mir um wirklich externe Programme handelt:
http://www.java-forum.org/allgemein...artete-prozesse-bleiben-beendigung-leben.html

Ich kann die Prozesse schon vorher beenden, jedoch sollen sie auch beendet werden, wenn das Programm abstürzt. Funktioniert das? Das Ding ist auch das ich noch eine andere Sorte von Programmen starte und dieses beendet (sich?) automatisch mit Ende des Javaprogramms.

Ich hoffe ihr habt mich verstanden, sonst fragt bitte nach.

Gruß Eule
 
Hallo,

mit dem von Dir schon entdeckten Shudown-Hook sollte es Dir möglich sein, die Kindprozesse bei einem Herunterfahren der JVM zu destroyen. Wenn eine JVM abstürzt, fliegt immer irgend ne Exception oder nen Error. D.h. Du brauchst einen catch-Block, der alles fängt,was Du nicht anderswo behandelst. In diesem destroyst Du dann deine Kinder. Hab mal was qnd programmiert, damit klar wird, worauf ich hinaus will.
Java:
public final class Test {

	private static final Set<Process> PROCESSES = new HashSet<Process>();

	/**
	 * @param args
	 */
	public static void main(String[] args ) throws Throwable {

		try {
			final Process kwrite = Runtime.getRuntime().exec("/usr/bin/kwrite");

			PROCESSES.add(kwrite);

			System.out.println("Started a new kwrite");
			
		
			Thread.sleep(10000);
			
			throw new RuntimeException("Abgestürzt");
		}
		catch (Throwable e) {
			
			System.err.println(e);
			
			for (final Process process : PROCESSES) {
				
				PROCESSES.remove(process);
				
				process.destroy();
			}

			System.exit(100);
		}
	}

}
 

Neue Themen


Zurück
Oben