000
06.04.2008, 20:36 Uhr
RedEagle
|
Hi ich habe ein Programm, das eine Datei einliest und an stdout ausgibt, und ein Programm das aus stdin liest, und in eine Datei schreibt. Diese lassen sich mit einer Pipe in der Konsole verbinden:
Code: |
./rd o1.txt | ./wr c1.txt
|
wr liest jetzt dass, das rd nach stdout schreibt. Wie schaffe ich es jetzt, dass auch wr etwas nach stdout schreiben kann, was rd ließt?
Eine möglichkeit währe:
Code: |
./rd o1.txt | ./wr c1.txt | ./rd o1.txt
|
Allerdings weiß das 1. rd dann nicht, was das 2. rd gerade mit der Datei anstellt. bzw.: möchte ich das später auf ein Programm anwenden, das mit der Seriellen Schnittstelle kommuniziert.
Ich bin bei meiner Suche auf die Funktion pipe() gestoßen, aber so wie ich dass verstanden habe, kann ich dann nur mit fork() erstelle "Kopien" des rd-Prozesses kommunizieren.
Also, mein konkretes Vorhaben: Eine Prozssreihe aufstellen (erstmal nur 2, später ggf mehr (z.B. tee noch dazwischen)), die in beide Richtungen miteinander kommunizieren können.
1. Ist das überhaupt in der Form möglich? 2. Wie realisiere ich das? -- MFG RedEagle |