util/libsrc/util/console-util.c

1 ファイル

1.1 util/libsrc/util/console-util.c

コンソール UTF-8 ヘルパー実装。

Windows 環境: stdout / stderr を匿名パイプに差し替え、 読み取りスレッドがコンソール (TTY) には WriteConsoleW で UTF-16 として 出力し、パイプやファイルへは UTF-8 バイト列をそのまま転送します。
Linux 環境: console_init / console_dispose は no-op です。

2 関数

2.1 console_init

void CONSOLE_UTIL_API console_init ( void )

コンソールヘルパーを初期化する。

Windows 環境では stdout と stderr を内部パイプに差し替え、 バックグラウンドスレッドを起動します。
スレッドはパイプから UTF-8 バイト列を受け取り、出力先がコンソール (TTY) の場合は WriteConsoleW で UTF-16 として書き出します。 パイプやファイルへは UTF-8 バイト列をそのまま転送します。
Linux 環境では何もしません。
stdin には触れません。
本関数はプログラム開始時に一度だけ呼び出すことを想定しています。
初期化に失敗した場合は stderr に警告を出力し、何もせずに返ります。

2.1.1 補足

本関数を呼び出した後は console_dispose を呼び出して リソースを解放してください。

2.2 console_dispose

void CONSOLE_UTIL_API console_dispose ( void )

コンソールヘルパーを終了し、リソースを解放する。

Windows 環境ではバックグラウンドスレッドを停止し、 stdout / stderr を元のハンドルに戻します。
Linux 環境では何もしません。
console_init を呼び出していない場合も安全に呼び出せます。