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