Pakuję istniejący kod C++ z projektu BSD w naszym własnym niestandardowym opakowaniu i chcę go zintegrować z naszym kodem przy jak najmniejszej ilości zmian. Ten kod używa fprintf
do drukowania na stderr w celu rejestrowania/zgłaszania błędów.Windows C++: Jak mogę przekierować stderr dla połączeń z fprintf?
Chcę przekierować to do alternatywnego miejsca w ramach tego samego procesu. Na Unixie zrobiłem to z parą gniazd i wątkiem: jeden koniec gniazda to miejsce, w którym wysyłam stderr (przez połączenie z dup2
), a drugi koniec jest monitorowany w wątku, gdzie mogę następnie przetwarzać dane wyjściowe.
To nie działa w oknach, ponieważ gniazdo nie jest tym samym, co uchwyt pliku.
Wszystkie dokumenty znalezione w Internecie pokazują, jak przekierować dane wyjściowe z procesu potomnego, co nie jest tym, czego chcę. Jak mogę przekierować stderr w ramach tego samego procesu uzyskiwania wywołania zwrotnego pewnego rodzaju, gdy dane wyjściowe są zapisywane? (i zanim to powiesz, próbowałem SetStdHandle
, ale nie mogę znaleźć żadnego sposobu, aby to zrobić) ...