2009-05-26 12 views
9

Ich habe ein Handle zu einer Java Process-Instanz und den zugehörigen Streams. Es ist ein Konsolenprogramm. Ich möchte eine Breaksequenz simulieren. Unter Windows ist dies Strg-C. Ist das ohne Eingeborene möglich?Wie wird die Interrupt-Key-Sequenz an einen Java-Prozess gesendet?

Der Grund dafür: Das Konsolenprogramm ist eine Befehlszeilenkonsole selbst, die eine virtuelle Maschine für eine andere Sprache steuert. Der Benutzer kann ein anderes Programm von diesem Konsolenprogramm aus ausführen. Während ein Programm ausgeführt wird, unterbricht die Unterbrechungssequenz die Ausführung des zugrunde liegenden Programms und veranlaßt das Konsolenprogramm, in den Debug-Modus zu gehen.

Wir sind Java-Wrapping dieser Konsole Debugger, so dass es über eine IDE (Eclipse) gesteuert werden kann. Das Senden der Break-Sequenz entspricht dem Drücken von "Suspend" im Eclipse-Debugger.

Antwort

4

Sie möchten wahrscheinlich in SendSignal suchen. Dadurch wird ein Ctrl-Break an einen Java-Prozess gesendet. Ich nehme an, Ihr Ziel ist es, einen Stack-Dump zu verursachen, den ein CTRL-C (Signal 3 aka SIGQUIT) für einen laufenden Java-Prozess tun wird?

+0

@Eddie: Danke für den Tipp. Ich habe meinen Beitrag aktualisiert, um weitere Hintergrundinformationen hinzuzufügen. Meine Absicht war nicht genau das, was du beschrieben hast. –

+0

@Eddie: guter Tipp! Lief wie am Schnürchen! –