Benutzerdefinierte Suche

popen: Ein- UND Ausgabe kontrollieren??

  1. calinux

    calinux Thread StarterMacUser Mitglied

    Mitglied seit:
    28.09.2004
    Beiträge:
    64
    Zustimmungen:
    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
     
    calinux, 26.06.2006
  2. der_Kay

    der_KayMacUser Mitglied

    Mitglied seit:
    02.09.2004
    Beiträge:
    1.685
    Zustimmungen:
    8
    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
     
    der_Kay, 26.06.2006
  3. calinux

    calinux Thread StarterMacUser Mitglied

    Mitglied seit:
    28.09.2004
    Beiträge:
    64
    Zustimmungen:
    0
    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 :)
     
    calinux, 26.06.2006
Die Seite wird geladen...