TTY
Stability: 2 - Stable
tty
模块主要提供了tty.ReadStream
和tty.WriteStream
这两个类。大多数情况下,你都不需要直接使用这个模块。
当node.js
检测到它运行于TTY上下文中,那么process.stdin
将会是一个tty.ReadStream
实例,process.stdout
将会是一个tty.WriteStream
实例。测试node.js
是否运行在TTY上下文中的一个比较好的办法是检查process.stdout.isTTY
:
$ iojs -p -e "Boolean(process.stdout.isTTY)"
true
$ iojs -p -e "Boolean(process.stdout.isTTY)" | cat
false
tty.isatty(fd)
如果fd
关联了终端,就返回true
,反之返回false
。
tty.setRawMode(mode)
已弃用。使用tty.ReadStream#setRawMode()
(如process.stdin.setRawMode()
)代替。
Class: ReadStream
一个net.Socket
子类,代表了一个TTY中的可读部分。一般情况下,在任何node.js
程序(仅当isatty(0)
为true
时)中,process.stdin
将是仅有的tty.ReadStream
实例。
rs.isRaw
一个被初始化为false
的布尔值。它代表了tty.ReadStream
实例的“原始”状态。
rs.setRawMode(mode)
mode
必须为true
或false
。它设定tty.ReadStream
的属性表现得像原始设备或默认值。isRaw
将会被设置为结果模式(resulting mode)。
Class: WriteStream
一个net.Socket
子类,代表了一个TTY中的可写部分。一般情况下,在任何node.js
程序(仅当isatty(1)
为true
时)中,process.stdout
将是仅有的tty.WriteStream
实例。
ws.columns
一个表示了TTY当前拥有列数的数字。这个属性会通过resize
事件被更新。
ws.rows
一个表示了TTY当前拥有行数的数字。这个属性会通过resize
事件被更新。
Event: 'resize'
- function () {}
当列属性或行属性被改变时,通过refreshSize()
被触发。
process.stdout.on('resize', function() {
console.log('screen size has changed!');
console.log(process.stdout.columns + 'x' + process.stdout.rows);
});