Chuyển Hướng Stdout Của Tiến Trình Hiện Tại Đến Kết Nối Mạng Trên Windows
Gần đây mình gặp một yêu cầu cần chuyển hướng đầu ra chuẩn (stdout) của tiến trình hiện tại sang một kết nối TCP. Trên hệ thống POSIX, việc này đơn giản chỉ cần gọi hàm dup2
để sao chép file descriptor. Tuy nhiên, Windows không tuân theo chuẩn POSIX, khiến việc triển khai trở nên phức tạp hơn nhiều.
Mình đã lục tung Stack Overflow và MSDN nhưng hầu như không tìm được giải pháp nào hiệu quả. Sau một ngày mày mò, mình rút ra được một số kinh nghiệm đặc biệt liên quan đến bản chất hoạt động của Windows.