popen: Ein- UND Ausgabe kontrollieren??

C

calinux

Mitglied
Thread Starter
Dabei seit
28.09.2004
Beiträge
64
Reaktionspunkte
0
Hallo zusammen,

vielleicht kann mir von euch ja jemand bei meinem Problem helfen - bzw. mir nen kleinen Tipp geben..

Worum es geht? Ich schreibe gerade an nem kleinen Kommandozeilentool und möchte ein anderes Programm aufrufen - und eben dessen Eingabe- UND Ausgabekanal mittels pipes "kontrollieren"..

Das Problem ist: mit popen kann ich ja nur entweder auf den stdin des aufzurufenden Programms schreibend ODER lesend auf dessen stdout zugreifen - und wenn ich zwei mal "popen" aufrufe, starte ich ja zwei verschiedene Instanzen des aufgerufenen Programms, oder??
Bin echt verwirrt - wie man vielleicht auch an meinem Satzbau erkennen kann ;)

Versteht von euch einer was ich meine?
Und weiß vielleicht sogar noch jemand eine Lösung dazu? :)

Grüßle ausm (fast) sonnigen Süden ;)

edit: lesend und schreibend gegeneinander ausgetauscht
 
Zuletzt bearbeitet:
Ohne es ausprobiert zu haben:

Code:
... = popen( ..., "r+" );
Aus der man-page:
"Since popen() is now implemented using a bidirectional pipe, the type argument may request a bidirectional data flow. The type argument is a pointer to a null-terminated string which must be [...]`r+' for reading and writing."

Grüße,

Kay
 
Hi Kay,

Danke für die Info - habs jetzt auch gesehen.. Allerdings ist das wohl nur eine kurzzeitige Lösung für mich, da bidirektionale pipes nicht von alles Unix-Systemen unterstützt werden (leider :( ) - es soll aber auch unter linux und solaris funktionieren - aber trotzdem nochmals Danke!

Ich glaub für nen posix-kompatiblen Weg muss ich mir "ein eigenes" popen mit Hilfe von pipe, fork, execl basteln *grml*

Grüßle :)
 
Zurück
Oben Unten