# stdin > Read data from [`stdin`][@stdlib/streams/node/stdin].
## Usage ```javascript var stdin = require( '@stdlib/process/read-stdin' ); ``` #### stdin( \[encoding,] clbk ) Reads data from [`stdin`][@stdlib/streams/node/stdin]. ```javascript function onRead( error, data ) { if ( error ) { return console.error( 'Error: %s', error.message ); } console.log( data.toString() ); // => '...' } stdin( onRead ); ``` By default, returned `data` is a [`Buffer`][buffer]. To return a `string` of a specified encoding, provide an `encoding` parameter. ```javascript function onRead( error, data ) { if ( error ) { return console.error( 'Error: %s', error.message ); } console.log( data ); // => '...' } stdin( 'utf8', onRead ); ``` When a file's calling Node.js process is running in a [TTY][tty] context (i.e., no [`stdin`][@stdlib/streams/node/stdin]), `data` will either be an empty [`Buffer`][buffer] (no encoding provided) or an empty `string` (encoding provided). ```javascript var stream = require( '@stdlib/streams/node/stdin' ); function onRead( error, data ) { if ( error ) { return console.error( 'Error: %s', error.message ); } console.log( data ); // => '' } stream.isTTY = true; stdin( 'utf8', onRead ); ```
## Examples ```javascript var string2buffer = require( '@stdlib/buffer/from-string' ); var stream = require( '@stdlib/streams/node/stdin' ); var stdin = require( '@stdlib/process/read-stdin' ); function onRead( error, data ) { if ( error ) { console.error( 'Error: %s', error.message ); } else { console.log( data.toString() ); // => 'beep boop' } } // Fake not being in a terminal context: stream.isTTY = false; // Provide a callback to consume all data from `stdin`: stdin( onRead ); // Push some data to `stdin`: stream.push( string2buffer( 'beep' ) ); stream.push( string2buffer( ' ' ) ); stream.push( string2buffer( 'boop' ) ); // End the stream: stream.push( null ); ```