Frage zu Programmaufruf mit system()



  • Hi,

    ich rufe mit system(path) ein fremdes Programm auf. Dieses schreibt beim Start einige Informationen auf die Konsole(stdout), die ich gerne mit meinem Programm auslesen möchte.
    Außerdem möchte ich diesem Programm auf der Konsole einige Kommandos zukommen lassen. Wie kann ich dies erreichen ?

    Gruß
    Median


  • Mod

    Indem du nicht system benutzt (das wahrscheinlich sowieso etwas ganz anderes tut, als du denkst), sondern fork, exec und pipe. Ist ein bisschen viel zu erklären. Falls dir die gar nichts sagen (was ich annehme, weil du sie sonst benutzt hättest), solltest du erst einmal die Manpages, Wikipedia und Google dazu befragen, dir Beispiele angucken, ein bisschen selber herumprobieren und allgemein lernen, wie das mit Prozessen, Programmaufrufen und Interprozesskommunikation so ungefähr läuft. Und wenn du in ein paar Stunden oder Tagen dann soweit Ahnung hast, dass du eine konkrete Frage stellen und eine mögliche Antwort verstehen kannst, dann fragst du noch einmal nach, falls du noch weitere Hilfe brauchst.



  • Hi, danke für die Antwort.
    Das dachte ich mir schon, noch hab ich diesbezüglich keine Erfahrung, werde mich da einlesen.

    Grad noch mal zum Verständnis : Mit system ruf ich über die Shell irgendein Programm auf. Was ist der Grund, wieso anschließend sämtliche cout nicht auf der Konsole erscheinen ?

    Gruß
    Median


  • Mod

    Median schrieb:

    Grad noch mal zum Verständnis : Mit system ruf ich über die Shell irgendein Programm auf.

    Vor allem wird von system eine vollständige neue Subshell gestartet, was fast nie ist, was man möchte.

    Was ist der Grund, wieso anschließend sämtliche cout nicht auf der Konsole erscheinen ?

    Werde konkret, ich habe keine Ahnung, wovon du redest.


Anmelden zum Antworten