![]() |
| | LinkBack | Themen-Optionen | Thema durchsuchen |
| | Nach oben #1 |
| Neuer Benutzer Registriert seit: 02.07.2009
Beiträge: 2
|
Hallo, hab folgendes Problem: unter Java muss ein Programm gestartet werden, das sich nur über bash Shell bedienen lässt. Danach muss ich ein paar Befehele, die das Programm steuren, aufrufen. Z.B. sollte folgende Codestück völlig automatisch ablaufen: $ poly > fun f () = print "Hello World\n"; > PolyML.export("hello", f); > ^D $ cc -o hello hello.o -lpolymain -lpolyml $ ./hello Hab mir überlegt, dass das am besten geht, wenn ich die Befehlle unter Java an bash übergebe. Nun, das Programm selbs (poly) zu starten ist kein Problem, aber wie übergebe ich weitere Befehle? (Zb fun f () = print "Hello World\n"; ) |
| | |
| | Nach oben #2 |
| fka Gottzilla Registriert seit: 02.02.2005 Ort: Würzburg
Beiträge: 753
|
Du startest das Programm über Runtime.getRuntime().exec(). Der Rückgabewert dieser Methode ist ein Process. Von diesem kannst du dir den Input und OutputStream holen. So kannst du weitere "Befehle" an das Programm senden.
|
| | |
| | Nach oben #3 |
| Neuer Benutzer Registriert seit: 02.07.2009
Beiträge: 2
|
Danke, problem gelöst. /** * Test main method. * * @param args ignored * @throws IOException * @throws InterruptedException */ public static void main(String[] args) throws IOException, InterruptedException { class StreamPipe implements Runnable { final InputStream input; final PrintStream output; StreamPipe(InputStream input, PrintStream output) { this.input = input; this.output = output; } public void run() { int b; try { while ((b = input.read()) != -1) { output.write(b); } } catch (IOException ex) { ex.printStackTrace(); } } } final ProcessBuilder pb = new ProcessBuilder("poly"); final Process process = pb.start(); new Thread(new StreamPipe(process.getInputStream(), System.out)).start(); new Thread(new StreamPipe(process.getErrorStream(), System.err)).start(); final PrintStream stdin = new PrintStream(process.getOutputStream()); stdin.println("fun f () = print \"Hello World\\n\";"); stdin.println("..."); stdin.flush(); process.waitFor(); } |
| | |
| | Nach oben #4 |
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 3.198
|
@nemo86: 2 Dinge:
__________________ Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! |
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | Thema durchsuchen |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [C] "Kleines" Problem bei einem einfachen Programm | Plankton | Sonstige Programmiersprachen | 5 | 28.12.2006 21:15 |
| Jar Programm nutzen | Jepse | Desktop-Applikationen und Grafik | 11 | 02.12.2005 17:55 |
| Einfaches Programm - nur wie ?! | magicforum | Allgemeine Java-Programmierung | 1 | 02.01.2005 17:49 |
| Konsolenbefehl unter Linux in Programm einbauen | Nicole66 | Allgemeine Java-Programmierung | 4 | 03.12.2004 10:07 |
| fremdes Programm aus Java aufrufen | miri | Allgemeine Java-Programmierung | 1 | 19.11.2004 18:49 |