uv_tty_t
--- TTY句柄¶
TTY句柄代表对终端的一个流。
uv_tty_t
是 uv_stream_t
的一个 '子类型' 。
数据类型¶
-
uv_tty_t
¶ TTY句柄类型。
-
uv_tty_mode_t
¶ 1.2.0 新版功能.
TTY模式类型:
typedef enum { /* 初始/正常终端模式 */ UV_TTY_MODE_NORMAL, /* 原始输入模式(在Windows上,也启用了ENABLE_WINDOW_INPUT) */ UV_TTY_MODE_RAW, /* 用于IPC的二进制安全的I/O模式(仅Unix) */ UV_TTY_MODE_IO } uv_tty_mode_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上这个函数将会使用 ttyname_r(3) 决定终端文件描述符的路径, 打开它,如果被传递的文件描述符指向一个TTY再使用它。 这允许libuv将TTY放入非阻塞模式而不影响共享这个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: 版更改: 尝试以一个指向一个文件的文件描述符初始化一个TTY流在UNIX上返回 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()
中间调用它的时候。
参见
uv_stream_t
的API函数也适用。