Tôi đang gói mã C++ hiện có từ dự án BSD trong trình bao bọc tùy chỉnh của riêng mình và tôi muốn tích hợp nó vào mã của chúng tôi với ít thay đổi nhất có thể. Mã này sử dụng fprintf
để in tới stderr để đăng nhập/báo cáo lỗi.Windows C++: Làm thế nào tôi có thể chuyển hướng stderr cho các cuộc gọi đến fprintf?
Tôi muốn chuyển hướng điều này đến một địa điểm thay thế trong cùng một quy trình. Trên Unix tôi đã làm điều này với một socketpair và một thread: một đầu của socket là nơi tôi gửi stderr (thông qua một cuộc gọi đến dup2
) và đầu kia được giám sát trong một chủ đề, nơi tôi có thể xử lý đầu ra.
Tính năng này không hoạt động trên các cửa sổ mặc dù ổ cắm không giống như tay cầm tệp.
Tất cả tài liệu tôi đã tìm thấy trên web cho thấy cách chuyển hướng đầu ra từ một tiến trình con, không phải là những gì tôi muốn. Làm thế nào tôi có thể chuyển hướng stderr trong cùng một quá trình nhận được gọi lại của một số loại khi đầu ra được viết? (và trước khi bạn nói như vậy, tôi đã thử SetStdHandle
nhưng không thể tìm thấy cách nào để thực hiện tác vụ này) ...