In Runtime Output schreiben

Status
Nicht offen für weitere Antworten.

Weisswurst

Aktives Mitglied
Hi!

Ich habe in dem Zusammenhang vor einiger Zeit schonmal ein Thread gestartet, leider ist es mir bislang nicht gelungen das Problem zu lösen.

Ich müsste dringend in den Outputstream von Runtime schreiben um das Netzlaufwerk in jedem Fall trennen zu können. Ich lese in diversen Erläuterungen zu exec() immer wieder, dass man das aufgerufene Programm über den Outputstream mit Eingaben versorgen kann. Wie das gehen soll, ein Beispiel oder ähnliches habe ich aber noch niergends gesehen?

Wie schaff ich es dem laufenden Programm ein Y und ein Enterdruck zu schicken?

Hier mal ein Beispiel, wie's nicht geht ;)

Code:
System.out.println("Deleting Networkdrive");
ProcessBuilder builder = new ProcessBuilder( "cmd", "/c", "net use r: /delete" ); 
builder.directory( new File("c:/") ); 
Process p = builder.start(); 
					 
Scanner s = new Scanner( p.getInputStream() ).useDelimiter( "\\Z" ); 
if(s.hasNext())
    System.out.println( s.next() ); 
						
PrintStream ps = new PrintStream(p.getOutputStream());
    s.println('Y');
						
s.useDelimiter("\\Z");
System.out.println(s.next());
 

Saxony

Top Contributor
Hiho,

ich habe das für ein return so gemacht:

Code:
Runtime rt = Runtime.getRuntime();

Process proc = rt.exec(aCommand);

OutputStream  os = proc.getOutputStream();

if (os != null) {

    try {

	    os.write((int) '\n');
	    os.flush();
    } catch (Exception ex) {

	    ex.printStackTrace();
    }
}

Man kann das zum Beispiel auch noch mit dem InputStream kombinieren:

Code:
Runtime rt = Runtime.getRuntime();

Process proc = rt.exec(aCommand);

OutputStream  os = proc.getOutputStream();
InputStream is = proc.getInputStream();

try {
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(isr);
        String line = null;
        while ((line = br.readLine()) != null) {
            if (line.startsWith("Taste drücken")) {

	os.write((int) '\n');
	os.flush();
            }
        }
catch usw.

bye Saxony
 

Murray

Top Contributor
Der Code
Code:
s.println( 'Y');
ist Unfug.

Wenn Du das 'Y' an den Prozess schicken willst, dann schreibe doch auch
Code:
ps.println( 'Y');


Und wie in Saxonys Beispiel nach der Ausgabe den Stream flushen, damit das auch wirklich beim Prozess landet.
 

Weisswurst

Aktives Mitglied
@Murray das p habe ich versehentlich beim Pasten in's Forum und anschliessendem Tab entfernen rausgelöscht.
Im Eclipse steht natürlich ps. Sorry für die Verwirrungsstiftung :)

Ich werd mal Saxonie's Beispiel versuchen.
 

Weisswurst

Aktives Mitglied
So, ich hab's jetzt mal so wie Saxony macht versucht.

Flushen habe ich letzte Woche schon mal versucht. Das funktioniert nicht. Ich erhalte folgende Ausgabe:

Code:
Is it OK to continue disconnecting and force them closed? (Y/N) [N]: 
java.io.IOException: Die Pipe wird gerade geschlossen
	at java.io.FileOutputStream.writeBytes(Native Method)
	at java.io.FileOutputStream.write(Unknown Source)
	at java.io.BufferedOutputStream.flushBuffer(Unknown Source)
	at java.io.BufferedOutputStream.flush(Unknown Source)

Der Code sieht momentan so aus:

Code:
System.out.println("Deleting Networkdrive");
//p = rt.exec("net use r: /delete");
ProcessBuilder builder = new ProcessBuilder( "cmd", "/c", "net use r: /delete" ); 
builder.directory( new File("c:/") ); 
Process p = builder.start(); 
					 
Scanner s = new Scanner( p.getInputStream() ).useDelimiter( "\\Z" ); 
if(s.hasNext())
    System.out.println( s.next() ); 
						
//PrintStream ps = new PrintStream(p.getOutputStream());
OutputStream os = p.getOutputStream();
//ps.println('Y');
os.write((int) 'y');
os.write((int) '\n'); 
					       
os.flush();
						
/*byte[] answer = {'Y','\n','\r'};  
p.getOutputStream().write(answer);
p.getOutputStream().flush();*/

s.useDelimiter("\\Z");
System.out.println(s.next());

Wenn nicht geflusht wird, passiert gar nix...
Auch jeden Fall mal danke für die Hilfe!
 

Weisswurst

Aktives Mitglied
Ich hab mal eine Exe besorgt, die die letzte Eingabe wieder ausspuckt. Der Code wie oben funktioniert mit dem Programm :(

Es geht nur nicht mit net use :( :(
Hat jemand nen alternativen Vorschlag wie ich ein Netzlaufwerk verbinden kann? Ich muss halt Benutzername und Passwort angeben können.

Sehr frustrierend das...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Output eines über Runtime.getRuntime.exec gestarteten Jars Allgemeine Java-Themen 6
M Registry Autostart Eintrag ertstellen mit Java (Runtime.getRuntime().exec()) Allgemeine Java-Themen 0
M this application requires a java runtime environment 1.8.0 Allgemeine Java-Themen 2
S Gibt es eine Moeglichkeit die Runtime Ausführung zu analysieren..? Allgemeine Java-Themen 7
J Verschiedene Runtime Versionen gleichzeitig? Allgemeine Java-Themen 12
K Threads Runtime und Process Probleme Allgemeine Java-Themen 3
H Runtime reagiert erst wenn Programm abbricht Allgemeine Java-Themen 1
J Probleme mit der Java-Runtime Allgemeine Java-Themen 10
M Runtime.exec() verursacht auf manchen Systemen Probleme - Ursache unklar Allgemeine Java-Themen 2
S Command funktioniert in Kommandzeile aber nicht mit ProcessBuilder bzw. Runtime.exec auf MAC Allgemeine Java-Themen 3
D Java Objekt als Service in Runtime registrieren Allgemeine Java-Themen 1
Thallius Runtime.getRuntime().exec " escapen? Allgemeine Java-Themen 9
W Threads Mit Thread und Runtime externe Programme öffnen Allgemeine Java-Themen 0
C Runtime Problem Allgemeine Java-Themen 1
P programm öffnen mit der runtime Allgemeine Java-Themen 9
N Runtime.getRuntime().exec Problem mit find Allgemeine Java-Themen 3
W JavaDoc Runtime-Exceptions: Wie sinnvoll anzeigen? Allgemeine Java-Themen 14
P Runtime bzw. RAM-Auslastung eines Prozesses Allgemeine Java-Themen 9
M Befehl in Runtime ausführen der Eingabe benötigt Allgemeine Java-Themen 3
aze Jar ausführen über Runtime.execute funktioniert nicht Allgemeine Java-Themen 4
T Bluescreen bei Runtime.exec(); Allgemeine Java-Themen 8
I Runtime.getRuntime().exec Problem Allgemeine Java-Themen 4
G Runtime.exec beendet Programm unter Linux, wenn Java Programm beendet wird Allgemeine Java-Themen 3
N Runtime.exec() Exception Problem Allgemeine Java-Themen 3
N Runtime.exec() Allgemeine Java-Themen 7
S Runtime Exceptions in eine Datei schreiben Allgemeine Java-Themen 7
N Internet Explorer mit bestimter Java Runtime starten Allgemeine Java-Themen 2
truesoul Runtime.getRuntime().exec nebenbei ausführen Allgemeine Java-Themen 12
S Runtime.getRuntime()... Allgemeine Java-Themen 6
Z Runtime.getRuntime().exec-Problem Allgemeine Java-Themen 4
J Runtime.exec setzt Fokus auf Frame Allgemeine Java-Themen 2
V Probleme mit Runtime.exec() Allgemeine Java-Themen 3
M Runtime.exec() - Performance / Frage zu Threads Allgemeine Java-Themen 5
S Rückgabewert runtime Allgemeine Java-Themen 11
M Runtime.getRuntime().exec(cmd); auf windows ... Allgemeine Java-Themen 2
martin82 Java Runtime Update >17 - SwingWorker Änderungen? Allgemeine Java-Themen 7
T Runtime.exec() Allgemeine Java-Themen 3
X Wann ist Runtime.getRuntime().exec mit Copy fertig? Allgemeine Java-Themen 10
W java ohne runtime Allgemeine Java-Themen 2
N runtime.exec() Problem Allgemeine Java-Themen 6
W Runtime.getRuntime().exec() Allgemeine Java-Themen 10
lordcarlos Runtime exec und mplayer (linux) Allgemeine Java-Themen 11
C JApplet und Runtime.getRuntime().exec() Allgemeine Java-Themen 2
K Runtime.exec mit Timeout Allgemeine Java-Themen 5
0 Runtime.exec() VLC starten klappt nicht Allgemeine Java-Themen 9
G Runtime.exec - Prozess "mittendrin" "einfach Allgemeine Java-Themen 4
G Runtime? Allgemeine Java-Themen 3
J Runtime.exec unter win vista? Allgemeine Java-Themen 10
M Probleme Runtime.getRuntime().exec(Start.cmd); Allgemeine Java-Themen 10
F Problem mit Runtime.exec() Allgemeine Java-Themen 8
S Problem mit Runtime. Allgemeine Java-Themen 2
E Programm mit der Runtime ausführen Allgemeine Java-Themen 8
M Runtime & Exception Allgemeine Java-Themen 3
J ServiceInterface - Runtime() > jemand eine idee? Allgemeine Java-Themen 2
A Runtime oder ProcessBuilder exe starten Allgemeine Java-Themen 3
V Java-Programm vom USB-Stick ohne Runtime-Installation Allgemeine Java-Themen 18
J Probiert mal bitte aus (Thread + Runtime) Allgemeine Java-Themen 10
A Installierte Runtime ermitteln Allgemeine Java-Themen 3
M Runtime.exec unter Vista (Administrator Rechte) Allgemeine Java-Themen 2
K Probleme mit Runtime.getRuntime().exec Allgemeine Java-Themen 6
T ausführbares jar File mit integriertem Java Runtime 6+JOGL Allgemeine Java-Themen 7
A Runtime.getRuntime().exec mit Warte auf Beendigung - Wie? Allgemeine Java-Themen 7
R Problem mit Runtime.getRuntime().exec() Allgemeine Java-Themen 4
the[V]oid Ausführen von "javac" über Runtime.exec() Allgemeine Java-Themen 4
W Runtime Error216 Runtime error 217 Allgemeine Java-Themen 6
B Runtime Verzeichniss wechseln Allgemeine Java-Themen 8
C Java SE Runtime 6 Update 1 - IE 7 und FF 2.0 - Allgemeine Java-Themen 6
F Runtime.getRuntime().exec mit Linux und Leerzeichen Allgemeine Java-Themen 3
D runtime.exec --> Prozess hängt sich auf Allgemeine Java-Themen 7
T Runtime.exec -> Prozesskontrolle abgeben ? Allgemeine Java-Themen 11
B Probleme mit Runtime.getRuntime().exec("cmd.exe") Allgemeine Java-Themen 4
M Runtime.getRuntime().exec(txt_rsync_option.getText()); Allgemeine Java-Themen 12
M Rückgabewert von Runtime.getRuntime().exec() Allgemeine Java-Themen 2
G Programm wird von java cmd runtime nicht aufgerufen? Allgemeine Java-Themen 13
S Runtime.exec() berechtigungen Allgemeine Java-Themen 5
S Runtime.exec und X Umgebung Allgemeine Java-Themen 2
A Runtime Process bricht nicht ab! Allgemeine Java-Themen 7
F Shell-Programme per Runtime.exec() starten und mehr? Allgemeine Java-Themen 4
K Runtime.exec und DFÜ-Verbindung Allgemeine Java-Themen 5
C Rechte unter WinXP, MySQL-Server per Runtime herunterfahren? Allgemeine Java-Themen 6
P Copy mit Runtime.exec() unter Unix Allgemeine Java-Themen 4
D Problem mit Runtime.getRuntime().exec() Allgemeine Java-Themen 14
L Runtime.getRuntime.exec() Allgemeine Java-Themen 7
T Probleme mit Runtime.exec in Jar File Allgemeine Java-Themen 2
M Runtime.exec unter Linux Allgemeine Java-Themen 11
G Java Runtime Verzeichnis ermitteln Allgemeine Java-Themen 3
X Problem mit Runtime.getRuntime().exec("cls"); Allgemeine Java-Themen 18
S Runtime.getRunTime().exec("jar cvf .) hängt sich auf Allgemeine Java-Themen 3
9 J2SE Runtime Environment 5.0 Allgemeine Java-Themen 6
M Runtime.getRuntime().exec() - Fehler abfangen Allgemeine Java-Themen 5
S Runtime exec unter MacOS X will nicht "open pfad" Allgemeine Java-Themen 7
S dvbscan mit Runtime.getInstance().exec() ausführen ? Allgemeine Java-Themen 24
B Problem mit Runtime.getRuntime().exec() Allgemeine Java-Themen 4
G Runtime.getRuntime() Allgemeine Java-Themen 10
G Runtime.getRuntime().exec("cmd /c START") Allgemeine Java-Themen 3
M Runtime.exec() => java.io.exception: too many open files Allgemeine Java-Themen 10
S Programm starten mit Runtime aktuelles Verzeichnis wechseln Allgemeine Java-Themen 7
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
harrytut Java Input/Output Tests Junit Allgemeine Java-Themen 3
Tobero Batch Vorgang zum output Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben