DaMoN1993
Commander
- Registriert
- Dez. 2006
- Beiträge
- 2.118
Hallo Forum,
Ich will mir zZt. ein kleines Tool für ein bereits existierendes Programm Schreiben.
Genauer gesagt, will ich ein installations-tool für den BUKKIT-server basteln.
Bukkit startet in der Kommandozeile, genauer gesagt in einer instanz einer java-vm. (?)
Sobald der Server gestartet ist, kann der benutzer über die kommandozeile befehle eingeben und ausführen.
Dies will ich nun mit c# tun.
Der Prozess wird korrekt gestartet, ich leite den Input sowie Output-stream um.
Jedoch habe ich mit
keinen Erfolg. process ist das Objekt für den gestarteten Prozess, dieses wurde nur mit ProcessStartInformation gefüttert, initialisiert, und es wird einmal abgefragt ob der Prozess gestartet ist.
Die StandardOutput-Zeilen kann ich nicht mit ReadLine abfragen bis ich alle vorherigen Zeilen abgefragt habe, die Anzahl variiert immer, und ab einem bestimmten Punkt wird nur ">" zurückgegeben, obwohl etwas anderes in der Konsole steht.
mit cmd klappt das WriteLine beim StandardInput mit anschließendem flush, das wird anstandslos ausgeführt. der stop-befehl allerdings nicht.
Woran liegt das? Gibt es eine andere (bessere) methode, wie ich einen Befehl an die Kommandozeile des java-prozesses senden kann?
MfG
Damon
Ich will mir zZt. ein kleines Tool für ein bereits existierendes Programm Schreiben.
Genauer gesagt, will ich ein installations-tool für den BUKKIT-server basteln.
Bukkit startet in der Kommandozeile, genauer gesagt in einer instanz einer java-vm. (?)
Sobald der Server gestartet ist, kann der benutzer über die kommandozeile befehle eingeben und ausführen.
Dies will ich nun mit c# tun.
Der Prozess wird korrekt gestartet, ich leite den Input sowie Output-stream um.
Jedoch habe ich mit
Code:
process.StandardInput.WriteLine("stop");
process.StandardInput.Flush();
Code:
ProcessStartInfo psi = new ProcessStartInfo("java");
psi.Arguments = "-Xms1024M -Xmx1024M -jar \"D:\\bukkit\\craftbukkit-0.0.1-SNAPSHOT.jar\"";
psi.WorkingDirectory = "D:\\bukkit";
psi.UseShellExecute = false;
psi.CreateNoWindow = true;
psi.RedirectStandardInput = true;
psi.RedirectStandardOutput = true;
Process process = new Process();
process.StartInfo = psi;
bool started = process.Start();
Die StandardOutput-Zeilen kann ich nicht mit ReadLine abfragen bis ich alle vorherigen Zeilen abgefragt habe, die Anzahl variiert immer, und ab einem bestimmten Punkt wird nur ">" zurückgegeben, obwohl etwas anderes in der Konsole steht.
mit cmd klappt das WriteLine beim StandardInput mit anschließendem flush, das wird anstandslos ausgeführt. der stop-befehl allerdings nicht.
Woran liegt das? Gibt es eine andere (bessere) methode, wie ich einen Befehl an die Kommandozeile des java-prozesses senden kann?
MfG
Damon