Kommandozeilenprogramm schreibt nicht auf cout, wohin dann?

23/09/2010 - 09:48 von Edzard Egberts | Report spam
Ich habe hier ein Tool "capture", das ich in ein Steuerprogramm
einbinden will. Im Terminal làsst es sich z.B. als "capture status"
aufrufen und gibt dann "status ok" aus, es ist aber auch möglich nur
"capture" aufzurufen, dann erhàlt man einen Prompt für Eingaben und kann
"status" eingeben, worauf "status ok" erscheint.

Ich wollte das jetzt über pipes nutzen und habe pipes angelegt, geforkt,
die pipes mit dup2() STDOUT_FILENO belegt und zuletzt mit execl()
capture ausgeführt, bekomme aber nichts über die Pipe herein. Das ganze
funktioniert aber, denn wenn ich statt "capture" ein einfaches
Testprogramm aufrufe, das auf cout herunterzàhlt, kommt das wie erwartet
in meinem Steuerprogramm an. Ein cout nach dem Forken geht auch über die
Pipe.

Jetzt stehe ich auf dem Schlauch. Ich hàtte erwartet, dass sich
Ausgaben, die im Terminal erscheinen, über cout abfragen lassen, das ist
aber offensichtlich nicht der Fall. Muss ich irgend etwas anderes
duppen, das Programm im Aufruf irgendwie umleiten oder sonst etwas
machen? Ich weiß gerade gar nicht, wo das hàngt.
 

Lesen sie die antworten

#1 felix
23/09/2010 - 10:02 | Warnen spam
* Edzard Egberts :
Jetzt stehe ich auf dem Schlauch. Ich hàtte erwartet, dass sich
Ausgaben, die im Terminal erscheinen, über cout abfragen lassen, das ist
aber offensichtlich nicht der Fall. Muss ich irgend etwas anderes
duppen, das Programm im Aufruf irgendwie umleiten oder sonst etwas
machen? Ich weiß gerade gar nicht, wo das hàngt.



Es gibt auch noch 'cerr'. Wobei ich in diesem Kontext die Bezeichnungen
stdout und stderr für passender halte. cout und cerr sind die
entsprechenden iostream-Abstraktionen in C++.

Also, ich tippe mal stark darauf, dass dein Programm seine Ausgabe auf
stderr tàtigt.

Grüße,
Felix

Felix Palmen (Zirias) + [PGP] Felix Palmen
web: http://palmen-it.de/ | http://palmen-it.de/pub.txt
my open source projects: | Fingerprint: ED9B 62D0 BE39 32F9 2488
http://palmen-it.de/?pg=pro + 5D0C 8177 9D80 5ECF F683

Ähnliche fragen