Ich wickle vorhandenen C++ - Code aus einem BSD-Projekt in unserem eigenen benutzerdefinierten Wrapper und ich möchte es mit so wenig Änderungen wie möglich in unseren Code integrieren. Dieser Code verwendet fprintf
, um stderr zu drucken, um Fehler zu protokollieren/zu melden.Windows C++: Wie kann ich stderr für Aufrufe von fprintf umleiten?
Ich möchte dies an einen alternativen Ort innerhalb des gleichen Prozesses umleiten. Auf Unix Ich habe mit einer socket und ein Gewinde dies getan: ein Ende der Buchse ist, wo I Stderr (über einen Aufruf an dup2
) und das andere Ende wird überwacht, in einem Thread zu senden, wo ich die Ausgabe dann verarbeiten kann.
funktioniert das nicht auf Windows aber, weil eine Steckdose nicht das gleiche wie eine Datei-Handle ist.
Alle Dokumente, die ich auf der Web-Show gefunden zu haben, wie die Ausgabe von einem untergeordneten Prozess umzuleiten, die nicht das, was ich will. Wie kann ich stderr innerhalb des gleichen Prozesses umleiten, der einen Rückruf irgendeiner Art erhält, wenn Ausgabe geschrieben wird? (Und bevor Sie es sagen, habe ich SetStdHandle
versucht, aber kann keine Möglichkeit finden, dies zu tun)