# Pipes



## Ronsimaschine (13. Nov 2004)

Hallo,
Ich hab in Java einen Webserver geschrieben (funktioniert recht gut) - jetzt wollte ich das ganze um CGI-Funktionalität erweitern; nur da hab ich ein kleines Problem. Ich starte mit exec (aus Runtime) den Perl-Interpreter + das aufgerufene Script übergebe ich als Argument -> ich weiß aber nicht wie ich dem Script Eingaben (Formulardaten) übergeben kann. Sollte irgendwie mit Pipes gehn? Ausgabe auch dasselbe?
Muss mein Java-Server auch Environment-Variablen dem Script zur Verfügung stellen?

Hoffe mir kann jemand helfen, wäre sehr dankbar.


----------



## Ronsimaschine (17. Nov 2004)

hm, hat wirklich niemand eine Idee?
Mit PipedInputStream müsst es funktionieren - nur ist mir nicht ganz klar wie ich mich zum Standard-Output vom Perl-Script "connecten" kann. bzw. PipedOutputStream und StdInput von Script...

m.f.g. Ronsimaschine


----------



## Guest (18. Nov 2004)

Schau Dir die Methoden getInputStream() und getErrorStream() in der Klasse Process an.

z.B. (Ausgabe vom aufgerufenen Programm nach System.out umleiten; hier Zeichenweise, solange etwas kommt)

```
Process p = Runtime.getRuntime().exec(...);
InputStreamReader in = new InputStreamReader(p.getInputStream());
int c;
while ((c=in.read()) != -1)
  System.out.write(c);
```
In Deinem Server brauchst Du selbstverständlich mehr Kontrolle über die ausgeführten
Prozesse bzw. auch eine vernünftige Pufferung der Ausgabe und eine Fehlerbehandlung.
Nicht dass Dir der Server wegen einer Endlosschleife oder sonstigem fehlerhaften Verhalten 
in dem CGI-Programm/Script um die Ohren fliegt.
Status: 5## ist das Mindeste, was der Server im Fehlerfall ausspucken sollte. 

Gruß,
Michael


----------



## Ronsimaschine (18. Nov 2004)

danke Michael!
Endlich hab ich es dank deinem Hinweis hinbekommen.

m.f.g. Ronsimaschine


----------

