uv_tty_t — TTYハンドル

TTYハンドルは、コンソール用のストリームを表します。

uv_tty_tは、次の型の「サブクラス」です: uv_stream_t。

データ型

type uv_tty_t

TTYハンドルの型です。

enum uv_tty_mode_t

バージョン1.2.0で追加。

TTYモードの型:

typedef enum {
    /* Initial/normal terminal mode */
    UV_TTY_MODE_NORMAL,
    /*
    * Raw input mode (On Windows, ENABLE_WINDOW_INPUT is also enabled).
    * May become equivalent to UV_TTY_MODE_RAW_VT in future libuv versions.
    */
    UV_TTY_MODE_RAW,
    /* Binary-safe I/O mode for IPC (Unix-only) */
    UV_TTY_MODE_IO,
    /* Raw input mode. On Windows ENABLE_VIRTUAL_TERMINAL_INPUT is also set. */
    UV_TTY_MODE_RAW_VT
} uv_tty_mode_t;
enum uv_tty_vtermstate_t

コンソールの仮想端末モードの型:

typedef enum {
    /*
     * The console supports handling of virtual terminal sequences
     * (Windows10 new console, ConEmu)
     */
    UV_TTY_SUPPORTED,
    /* The console cannot process virtual terminal sequences.  (Legacy
     * console)
     */
    UV_TTY_UNSUPPORTED
} uv_tty_vtermstate_t

公開メンバー

該当なし

関連項目

次の型のuv_stream_tメンバーも適用されます。

API

int uv_tty_init(uv_loop_t *loop, uv_tty_t *handle, uv_file fd, int unused)

指定したファイル記述子で、新しいTTYストリームを初期化します。通常、ファイル記述子は次のいずれかです。

  • 0 = stdin

  • 1 = stdout

  • 2 = stderr

Unixでは、渡したファイル記述子がTTYを指す場合、この関数は、ttyname_r(3)で端末のファイル記述子のパスを調べ、その端末を開いて使います。これにより、同じTTYを共有する他のプロセスへ影響を与えずに、libuvがTTYを非ブロッキングモードにできます。

この関数は、ioctlのTIOCGPTNやTIOCPTYGNAMEをサポートしないシステム、たとえばOpenBSDやSolarisでは、スレッドセーフではありません。

注記

TTYを再度開くことに失敗した場合、libuvはブロッキング書き込みへ切り替えます。

バージョン1.23.1での変更: 次のパラメーター、readableは使わず、無視するようになりました。現在は、適切な値をカーネルから自動検出します。

バージョン1.9.0での変更: TTYのパスを、ttyname_r(3)で調べるようになりました。以前のlibuvでは、代わりに/dev/ttyを開いていました。

バージョン1.5.0での変更: UNIXでは、ファイルを指すファイル記述子でTTYストリームを初期化しようとすると、UV_EINVALを返すようになりました。

int uv_tty_set_mode(uv_tty_t *handle, uv_tty_mode_t mode)

バージョン1.2.0での変更: モードを、次の型の値で指定するようになりました: uv_tty_mode_t。

指定した端末モードでTTYを設定します。

int uv_tty_reset_mode(void)

プログラムが終了するときに呼び出します。次のプロセスが使えるよう、TTYの設定を既定値へ戻します。

この関数はUnixでは非同期シグナルセーフですが、次の関数の実行中に呼び出した場合は、エラーコードUV_EBUSYで失敗する可能性があります。該当する関数は、uv_tty_set_mode()です。

int uv_tty_get_winsize(uv_tty_t *handle, int *width, int *height)

現在のウィンドウサイズを取得します。成功時は0を返します。

関連項目

次の型のuv_stream_tAPI関数も適用されます。

void uv_tty_set_vterm_state(uv_tty_vtermstate_t state)

コンソールの仮想端末シーケンスをlibuvとコンソールのどちらが処理するかを制御します。特に、ConEmuでANSI X3.64とXtermの256色を有効にするときに役立ちます。それ以外では、通常、Windows10のコンソールを自動検出します。

この関数はWindowsだけで意味があります。Unixでは何も通知せずに無視します。

バージョン1.33.0で追加。

int uv_tty_get_vterm_state(uv_tty_vtermstate_t *state)

コンソールの仮想端末シーケンスを、現在libuvとコンソールのどちらが処理しているかを取得します。

この関数はUnixでは実装されておらず、UV_ENOTSUPを返します。

バージョン1.33.0で追加。