Probleme mit Pipe

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Zwerg
Beiträge: 397
Registriert: 26.12.2005 00:10:09
Wohnort: Magrathea
Kontaktdaten:

Probleme mit Pipe

Beitrag von Zwerg » 26.06.2007 19:26:14

Hallo com.

bin auch mal wieder am Werk und komm net weiter :-/


Ich hab mir hier zu Hause eine kleine Broadcastlösung zusammengeschustert, bestehend aus einem Shoutcastserver, Jackd und oddcast. Da mir das rumgefriemel beim Anstarten der einzelnen progs auf dauer zu nervig ist habe ich ein kleines Javaprogramm geschrieben was mir die Programme auf Knopfdruck startet und die Ausgaben dieser Programme in den einzelnen Fenstern anzeigt. Um die Ausgabe auszulesen greife ich von Java aus gesehen auf den Inputstream zu und lese aus was das Programm mir schreibt. Allerdings funktioniert das nur bei dem Shoutcastserver und jackd, nicht bei oddcast.

Ich habe dazu mal ein kleines Experiment angestartet um mein Problem zu erläutern. Ich habe folgendes PHP-Script namens in2out:

Code: Alles auswählen

#!/usr/bin/php
<?php
while(!feof(STDIN))
        echo fgets(STDIN);
?>
dieses macht nichts anderes als alles was in Stdin reinkommt aufm Bildschirm auszugeben. Folgendes Beispiel:

Code: Alles auswählen

echo "HelloWorld" | in2out
gibt "HelloWorld" aufm Screen aus.

Wenn ich aber folgendes mache:

Code: Alles auswählen

oddcastv3 -c ./oddcast_LAME1.cfg xmms-jack_21063_000:out_0 xmms-jack_21063_000:out_1 | in2out
passiert NICHTS, keine Ausgabe, und das obwohl, wenn ich oddcast so starte eine Ausgabe auf dem Bildschirm erscheint. Das gleiche Problem tritt auch beim Zugriff auf Stderr auf.

Weis jemand woran das liegt?

Vielen Dank für Antworten.

PS.:

im übrigen werden die Ausgaben in eine Datei umgeleitet wenn ich den Operator ">" oder "1>" benutze, es funktioniert nur das normale pipen mittels "|" nicht, aber warum?

Antworten