externe Programme pipen

T

Tante Käthe

Gast
Da ich nun seit einigen Stunden erfolglos versuche im Internet Lösungen, oder zumindest Ansätze zu entdecken wie ich mein Problem lösen kann, probier ich es auf diese Weise.

Problem, ich "muss" 2 externe Programme aus Java heraus starten, die anschließend miteinander kommunizieren müssen. in UNIX wäre es also ganz einfach:

prog1 ..... | prog 2 ....

Dabei interessiert mich der Exit-Code von Prog 2, oder wenn das nicht möglich ist, dessen Ausgabe.

Unter Java 7 wird eine Möglichkeit eingebaut dieses Problem einfach mit ProcessBuilder.redirect zu lösen, doch leider fehlen die dafür notwendigen Elemente in der aktuellen Version.

Ich hab schon nahezu alles probiert was PipeReader und alle anderen Reader/Writer etc. angeht. Leider wie gesagt bisher ohne Erfolg.

Zusätzlich existieren Versionen von prog1 und prog 2 sowohl für Windows als auch für Unix, daher sollte das ganze wenn möglich Plattformunabhängig sein.

Vielen Dank schonmal, wer immer sich diesem Problem annimmt
 

kay73

Bekanntes Mitglied
Also die Standard-Ein-/Ausgabeströme verbinden ist nicht so das Thema. Vielleicht hakt es bei Dir nur bei den Threads oder den Eingabelängen, bzw bei der Eingabeterminierung.

Hier ein Demo:

[c]prog1.Prog1[/c] schreibt die Zeit in die Standardausgabe, [c]prog2.Prog2[/c] liest zeilenweise die Standardeingabe und schreibt seinen Senf in die Standardausgabe. [c]connect.connectProcess[/c] startet die beiden Programme extern, verbindet deren Standardströme und leitet den Output von [c]prog2.Prog2[/c] nach [c]System.out[/c]. Mit dem Beenden hapert's leider gehörig, aber das bekommt man bestimmt auch in den Griff.

Java:
package prog1;

public class Prog1 {

	public static void main(final String[] args) throws InterruptedException {
		final long start=System.currentTimeMillis();
		
		while(System.currentTimeMillis() - start < 10000L) {
			System.out.println("Prog1 writes: "+System.currentTimeMillis());
			Thread.sleep(1000L);
		}
	}
}
Java:
package prog2;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Prog2 {

	public static void main(String[] args) throws IOException {
		final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		while (true) {
			System.out.println(String.format("%3$s - received \"%2$s\"", 
				System.currentTimeMillis(), br.readLine(), Prog2.class.getSimpleName()));
		}
	}
}
Java:
package connect;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class ConnectProcess {
		
	private static void connectStream(final InputStream in, final OutputStream out) throws IOException {		
		final byte [] buffer = new byte [80];
		int n;
		while(-1 != (n = in.read(buffer))) {
			out.write(buffer,0 ,n);
			out.flush();
		}
	}

	public static void main(String[] args) throws IOException {
		
		final PipedOutputStream pipedOut = new PipedOutputStream();
		final PipedInputStream pipedIn = new PipedInputStream(pipedOut);
		
		final ExecutorService exs = Executors.newCachedThreadPool();
		
		final String CLASSPATH="./bin";
		
		exs.submit(new Callable<Integer>() {

			@Override
			public Integer call() throws Exception {
				final Process p1 = Runtime.getRuntime().exec("java -cp "+CLASSPATH+" prog1.Prog1");
				connectStream(p1.getInputStream(), pipedOut);
				return p1.waitFor();
			}			
		});
		
		exs.submit(new Callable<Integer>() {

			@Override
			public Integer call() throws Exception {
				final Process p2 = Runtime.getRuntime().exec("java -cp "+CLASSPATH+" prog2.Prog2");
				
				exs.submit(new Callable<Integer>() {

					@Override
					public Integer call() throws Exception {
						connectStream(pipedIn, p2.getOutputStream());
						return 0;
					}					
				});
				
				connectStream(p2.getInputStream(), System.out);
				return p2.waitFor();
			}			
		});
	}
}
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
F externe programme ueber eine string starten Java Basics - Anfänger-Themen 2
S Befehle an externe Programme Java Basics - Anfänger-Themen 4
I Kamera anschließen / Bild machen / Live View / Externe Blitz Java Basics - Anfänger-Themen 19
C externe jar einbinden in Eclipse-Projekt Java Basics - Anfänger-Themen 2
C Java Funktion: externe Daten vom Internet einbinden Java Basics - Anfänger-Themen 2
S Maven und externe Library Java Basics - Anfänger-Themen 2
tom.j85 Externe Rest API konsumieren Java Basics - Anfänger-Themen 9
L Worauf muss ich achten, wenn ich externe Bibliotheken für meine Anwendungen verwende? Java Basics - Anfänger-Themen 6
W Externe class in Eclipse importieren Java Basics - Anfänger-Themen 0
G Servlet - externe HTML (URL) auslesen Java Basics - Anfänger-Themen 1
Hijo2006 Neue externe Klasse einbinden Java Basics - Anfänger-Themen 13
S Klassen Externe Klasse in ein Projekt mit einbinden Java Basics - Anfänger-Themen 7
T Externe Methoden aufrufen Java Basics - Anfänger-Themen 3
M Externe .jar in Sublime einbinden Java Basics - Anfänger-Themen 5
E Externe Library .zip Datei importieren Java Basics - Anfänger-Themen 3
D Externe Comperator-Klasse Java Basics - Anfänger-Themen 3
D Externe Eeite beim Mousover anzeigen Java Basics - Anfänger-Themen 0
U Externe Library im non runnable jar File im eclipse Java Basics - Anfänger-Themen 1
S externe Datei erstellen, oeffnen, bearbeiten Java Basics - Anfänger-Themen 2
S komponente über externe klasse zufügen Java Basics - Anfänger-Themen 13
D Externe Libs in Jar Java Basics - Anfänger-Themen 2
S externe Webseiten füllen Java Basics - Anfänger-Themen 5
H Classpath java.lang.NoClassDefFoundError externe Libary Java Basics - Anfänger-Themen 4
M externe JARs in die eigene JAR einbinden Java Basics - Anfänger-Themen 9
T Sichtbarkeiten und externe Klasse Java Basics - Anfänger-Themen 33
N Jar-File soll externe class-Datei benutzen Java Basics - Anfänger-Themen 8
S Externe Bibliothek zu Resources hinzufügen? Java Basics - Anfänger-Themen 5
B Externe Libraries fuer Applet ... Pfad eingeben? Java Basics - Anfänger-Themen 23
V Input/Output Plattform unabhängig auf externe Dateien zugreifen Java Basics - Anfänger-Themen 4
P Threads Thread und Zugriff auf externe Methode beenden Java Basics - Anfänger-Themen 4
N Klassen externe .class einbinden Java Basics - Anfänger-Themen 9
F Input/Output Wie externe Datei NICHT mit dem Standardprogramm öffnen? Java Basics - Anfänger-Themen 3
J Zugriff von main-Klasse auf externe Klassen Java Basics - Anfänger-Themen 51
T externe Datei fest an Projekt binden Java Basics - Anfänger-Themen 2
K Klassen externe JAR in Programm einbinden Java Basics - Anfänger-Themen 5
E externe .txt Datei mit Scanner einlesen Java Basics - Anfänger-Themen 7
X Extrahieren in Externe Klasse Funktioniert nicht Java Basics - Anfänger-Themen 6
Steve5000 Externe Batch-Datei starten und anwendung beenden?! Java Basics - Anfänger-Themen 4
L Externe Dateien, wohin? Java Basics - Anfänger-Themen 7
C OOP Externe Klasse erweitern (ohne Vererbung!!) Java Basics - Anfänger-Themen 8
G Eigene Klasse für externe Befehle - Warten auf Prozesse Java Basics - Anfänger-Themen 6
P Externe IP ermitteln? Java Basics - Anfänger-Themen 5
-horn- Externe Lib: JavaSCI richtig einbinden? Java Basics - Anfänger-Themen 5
I externe JAVA-Schnittstelle einbinden Java Basics - Anfänger-Themen 2
A Externe Klassen Laden und ausführen Java Basics - Anfänger-Themen 12
P externe JARs integrieren Java Basics - Anfänger-Themen 9
Y Applet lokal executable machen, externe Files inkludieren Java Basics - Anfänger-Themen 8
C externe Klassen in Projekt einbinden Java Basics - Anfänger-Themen 10
I Listenerklassen in externe Dateien auslagern? Java Basics - Anfänger-Themen 7
G Intern auf externe IP zugreifen? Java Basics - Anfänger-Themen 7
S externe Klassen Java Basics - Anfänger-Themen 3
M Parameterübergabe an externe JAR-Datei? Java Basics - Anfänger-Themen 2
Schandro Externe Bibliothek OHNE IDE benutzen Java Basics - Anfänger-Themen 5
B Externe .exe-Dateien starten +Runtime Java Basics - Anfänger-Themen 6
W Kann in meiner Jar nicht auf externe Jar zugreifen Java Basics - Anfänger-Themen 4
G zugriff auf festplatte / externe festplatten Java Basics - Anfänger-Themen 12
T Externe Datei aufrufen Java Basics - Anfänger-Themen 6
T Externe JAR datei in eigene? Java Basics - Anfänger-Themen 2
S externe Datei unformatiert einlesen & in double konverti Java Basics - Anfänger-Themen 2
B Paint(Component) und externe Objekte Java Basics - Anfänger-Themen 6
S per Kommandozeile compilieren: Problem: externe Jars einbind Java Basics - Anfänger-Themen 16
D Externe .jar in Eclipse nutzen Java Basics - Anfänger-Themen 3
F Externe Batch Datei aufrufen Java Basics - Anfänger-Themen 5
G Auf externe Resourceb zugreifen Java Basics - Anfänger-Themen 6
S externe URL öffnen und in Variable speichern. Java Basics - Anfänger-Themen 9
L Externe *.jar verwenden (ohne IDE) Java Basics - Anfänger-Themen 9
G JAR: Externe Dateien zur Laufzeit aufrufen Java Basics - Anfänger-Themen 12
I Wie eine externe Funktion rufen? Java Basics - Anfänger-Themen 11
G Externe Klassen mit ausliefern Java Basics - Anfänger-Themen 4
J Anfängerfrage: wie externe Dateien importieren? Java Basics - Anfänger-Themen 5
F Externe Datei aufrufen Java Basics - Anfänger-Themen 3
B Pfad für eine externe Klasse Java Basics - Anfänger-Themen 4
V Auf externe MySQL DB connecten? Java Basics - Anfänger-Themen 6
M Externe Klasse einbinden Java Basics - Anfänger-Themen 5
D Projekt als jar exportieren: Wie externe jars einbauen? Java Basics - Anfänger-Themen 5
A externe Library wird nicht gefunden Java Basics - Anfänger-Themen 4
K externe jar einbinden Java Basics - Anfänger-Themen 2
T Externe Api einbinden Java Basics - Anfänger-Themen 4
J String in externe Datei speichern Java Basics - Anfänger-Themen 2
N wie externe bibliotheken einbinden? Java Basics - Anfänger-Themen 2
S externe lib´s in welchen ordner packen? Java Basics - Anfänger-Themen 6
H Zugriff auf externe Variable Java Basics - Anfänger-Themen 10
G Externe Klassen einbinden Java Basics - Anfänger-Themen 4
P Externe Klassen Problem - Eclipse Java Basics - Anfänger-Themen 4
java-starter Erste Schritte Mit While Schleifen Programme schreiben Java Basics - Anfänger-Themen 4
Establishmensch Untermenü Programme Java Basics - Anfänger-Themen 5
W Zwei Programme sollen auf eine Klasse zugreifen Java Basics - Anfänger-Themen 18
cpt.Tomato Best Practice Wie speichert/Dokumentiert Ihr eure Programme? Java Basics - Anfänger-Themen 8
C Problem: PC ohne Internet und keine Möglichkeit Programme zu laden Java Basics - Anfänger-Themen 5
Dimax Programme ,als Text in MySql speichern Java Basics - Anfänger-Themen 7
B Suche Programme mit Fehlern Java Basics - Anfänger-Themen 9
S Parameterübergabe zwischen zwei Programme Java Basics - Anfänger-Themen 4
T Grafische programme - Variblen Schrift Java Basics - Anfänger-Themen 2
P Kann ich Java - Programme auch ohne Editor öffnen? Java Basics - Anfänger-Themen 70
H GSON-Bibliothek für eigene Programme benutzen Java Basics - Anfänger-Themen 2
A Erste Schritte Vieschiedene Java versionen für verschiedne Programme/Projekte Java Basics - Anfänger-Themen 3
D Zusammenfassen zweier Programme Java Basics - Anfänger-Themen 3
D Java-Programme nur vom eigenem Pc ausführbar Java Basics - Anfänger-Themen 10
A Eclips Problem mit der Wiedergabe des geschrieben Programme Java Basics - Anfänger-Themen 2
K Compiler-Fehler Programme funktionieren nicht mehr Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben