PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programmaufruf mittels exec()



TheDodger
11-04-2002, 22:06
so, jetzt habe ich nochmal eine Frage zu exec()

ein simpler Aufruf von Programmen via exec() ist ja schnell erledigt, doch wie kann ich evtl. Ausgaben auf stderr/stdout abfangen und in einer char speichern?
Irgendwo hab ich mal was von einer pipe gelesen, allerdings finde ich das nicht mehr und so richtig hab ich auch nicht's über google gefunden. :(

(Oder geht das ganze auch einfacher über eine KDE/QT Funktion?)

anda_skoa
12-04-2002, 13:07
Original geschrieben von TheDodger

(Oder geht das ganze auch einfacher über eine KDE/QT Funktion?)

Ja :)

Bei KDE gibts mehrere Möglichkeiten. KProcess und KProcIO.
Hab bisher nur mit KProcess unter KDE1 und KDE2 gearbeitet. Da wird ein slot aufgerufen, wenn der Prozess etwas auf stdout bzw stderr schreibt.

Unter Qt3 gibt es jetzt auch eine QProcess Klasse.
Soweit ich die Docs verstanden habe, funktioniert das so ähnlich wie KProcIO.
D.h. man wird benachrichtig, wenn Daten anliegen und kann die dann lesen.

Ciao,
_

TheDodger
13-04-2002, 17:23
Original geschrieben von anda_skoa


Bei KDE gibts mehrere Möglichkeiten. KProcess und KProcIO.
Hab bisher nur mit KProcess unter KDE1 und KDE2 gearbeitet. Da wird ein slot aufgerufen, wenn der Prozess etwas auf stdout bzw stderr schreibt.

Unter Qt3 gibt es jetzt auch eine QProcess Klasse.
Soweit ich die Docs verstanden habe, funktioniert das so ähnlich wie KProcIO.
D.h. man wird benachrichtig, wenn Daten anliegen und kann die dann lesen.


Danke, wenn ich wieder an mein Notebook darf :) (bin ja eigentlich auch im (Kurz)Urlaub ...) , werd ich das mal testen.

Sion
21-04-2002, 13:23
Original geschrieben von TheDodger
so, jetzt habe ich nochmal eine Frage zu exec()

ein simpler Aufruf von Programmen via exec() ist ja schnell erledigt, doch wie kann ich evtl. Ausgaben auf stderr/stdout abfangen und in einer char speichern?


Falls jemand an einer Consolen-Lösung interessiert ist:
Das Paket ivam/ivgetty (http://ivam.sourceforge.net/) startet ein beliebiges Programm, wobei stdout des Kind-Programmes in den stdin des Vater-Programmes umgebogen wird, und umgekehrt. Mit stderr klappt das natürlich genauso.
Das wird übrigens u.a. mit den Funktionsaufrufen ipipe und du2 gemacht.

Viel Spaß beim Studieren des Quelltextes,

Sion