javascript - 為什么 process.stdin 會有 write 方法? ???
問題描述
寫在前面根據(jù) 官方API,在 stream 中只有可寫流才會有 write 方法,但是有這樣一個例子卻使用 process.stdin.write() 發(fā)送數(shù)據(jù)。而 process.stdin 在 官方API 中是可讀流。
問題:RT,如果是其他的原因造成這樣一個情況,麻煩詳細(xì)描述一下。謝謝
參考代碼:stdin.js
/** * 監(jiān)聽輸入的數(shù)據(jù),并輸出到控制臺 */// 重新開始 stdin streamprocess.stdin.resume();// 監(jiān)聽輸入的數(shù)據(jù)process.stdin.on(’data’, function (data) { var number; try { // 將輸入的信息解析成數(shù)字 number = parseInt(data.toString(), 10); // 自增1 number += 1; // 輸出 數(shù)字 process.stdout.write(number + 'n',function() { console.log(1); }); } catch (err) { process.stderr.write(err.message + 'n'); }});
stdin_test.js
var spawn = require(’child_process’).spawn;// 使用 node 進程創(chuàng)建一個子進程執(zhí)行 stdin.jsvar child = spawn(’node’, [’stdin.js’]);// 每隔一秒調(diào)用一次該函數(shù)setInterval(function() { // 生成一個小于 10 的隨機數(shù) var number = Math.floor(Math.random() * 10); // 將該隨機數(shù)發(fā)送到子進程 child.stdin.write(number + 'n'); // 監(jiān)聽子進程的輸出 并打印出來 // 此處對應(yīng) stdin.js 的 process.stdout.write child.stdout.once(’data’, function(data) { console.log(’child replied to ’ + number + ’ with: ’ + data); });}, 1000);child.stderr.on(’data’, function(data) { process.stdout.write(data);});
問題解答
回答1:注意這里的 stdin 是 ChildProcess 的,是可寫流
https://nodejs.org/dist/lates...
相關(guān)文章:
1. MySQL數(shù)據(jù)庫中文亂碼的原因2. angular.js - 關(guān)于$apply()3. dockerfile - 我用docker build的時候出現(xiàn)下邊問題 麻煩幫我看一下4. nignx - docker內(nèi)nginx 80端口被占用5. angular.js使用$resource服務(wù)把數(shù)據(jù)存入mongodb的問題。6. angular.js - Ionic 集成crosswalk后生成的apk在android4.4.2上安裝失敗???7. mysql - 新浪微博中的關(guān)注功能是如何設(shè)計表結(jié)構(gòu)的?8. dockerfile - [docker build image失敗- npm install]9. css - C#與java開發(fā)Windows程序哪個好?10. 如何解決Centos下Docker服務(wù)啟動無響應(yīng),且輸入docker命令無響應(yīng)?
