此代碼基於Javascript的專業Node.js的構建可擴展的軟件數據發出:Node.js的代碼排序 - 這可能是之前監聽到位
var spawn = require('child_process').spawn;
// Spawn the child with a node process executing the plus_one app
var child = spawn('node', ['06_plus_one.js']);
// Call this function every 1 second (1000 milliseconds):
setInterval(function() {
// Create a random number smaller than 10.000
var number = Math.floor(Math.random() * 10000);
// Send that number to the child process:
child.stdin.write(number + "\n");
// Get the response from the child process and print it:
child.stdout.on('data', function(data) {
console.log('child replied to ' + number + ' with: ' + data);
});
}, 1000);
child.stderr.on('data', function(data) {
process.stdout.write(data);
});
子進程簡單的增加從父母傳過來的號碼。 child.stdin.write()
是否有可能進入子進程,並且在父代註冊其data
偵聽器之前,孩子已經發出了data
事件?
還有第二個問題。該代碼最初有不正確的子程序文件名並引發錯誤。我如何從產卵中捕獲錯誤?
通過在父文件的起始處調用'fs.readFile'或'fs.readFileSync'來測試子腳本的存在性,並且查找沒有錯誤和非零長度。這不會告訴你,如果子腳本是有效的,但會盡快識別缺少的腳本。 – Paul