### Stability: 2 - Stable
`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
~~~
#### tty.isatty(fd)
如果`fd`關聯了終端,就返回`true`,反之返回`false`。
#### tty.setRawMode(mode)
已棄用。使用`tty.ReadStream#setRawMode()`(如`process.stdin.setRawMode()`)代替。
#### Class: ReadStream
一個`net.Socket`子類,代表了一個TTY中的可讀部分。一般情況下,在任何`io.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中的可寫部分。一般情況下,在任何`io.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);
});
~~~