Saya membungkus kode C++ yang ada dari proyek BSD dalam pembungkus khusus kami sendiri dan saya ingin mengintegrasikannya ke kode kami dengan perubahan sesedikit mungkin. Kode ini menggunakan fprintf
untuk mencetak ke stderr untuk mencatat/melaporkan kesalahan.
Saya ingin mengarahkan ini ke tempat alternatif dalam proses yang sama. Di Unix saya telah melakukan ini dengan socketpair
dan thread
: salah satu ujung soket adalah tempat saya mengirim stderr (melalui panggilan ke dup2
) dan ujung lainnya dipantau di utas, tempat saya kemudian dapat memproses hasilnya.
Ini tidak berfungsi pada Windows karena soket tidak sama dengan pegangan file.
Semua dokumen yang saya temukan di web menunjukkan cara mengalihkan keluaran dari proses anak, yang bukan itu yang saya inginkan. Bagaimana saya bisa mengalihkan stderr dalam proses yang sama untuk mendapatkan semacam panggilan balik ketika keluaran ditulis? (dan sebelum Anda mengatakannya, saya sudah mencoba SetStdHandle
tetapi tidak dapat menemukan cara untuk membuat ini berhasil)...