父进程可以这样监听标准错误流:
child.stderr.on(‘data’, function(data) {
console.log(‘tail error output:’, data);
});
stderr属性和stdout一样,也是只读流,每当子进程往标准错误流里输出数据时,父进程就会得到通知,并输出数据。
发送数据到子进程
除了从子进程的输出流里接收数据,父进程还可以通过childPoces.stdin属性往子进程的标准输入里写入数据,以此来往子进程发送数据。
子进程可以通过process.stdin只读流来监听标准输入的数据,但是注意你首先必须得恢复(resume)标准输入流,因为它默认处于暂停(paused)状态。
例8-6将会创建一个包含如下功能的程序:
1.+1 应用:一个简单的应用程序,可以从标准输入接收整型,然后相加,再把相加以后的结果输出到标准输出流。这个应用作为一个简单的计算服务, 把Node进程模拟成一个可以执行特定工作的外部服务。
2.测试+1应用的客户端,发送随机整型,然后输出结果。用来演示Node进程如何生成一个子进程然后让它执行特定的任务。
用下面例8-6的代码创建一个名为plus_one.js的文件:
例 8-6: +1 应用程序(chapter8/06_plus_one.js)
// 恢复默认是暂停状态的标准输入流
process.stdin.resume();
process.stdin.on(‘data’, function(data) {
var number;
try {
// 将输入数据解析为整型
number = parseInt(data.toString(), 10);
// +1
number += 1;
// 输出结果
process.stdout.write(number + “n”);
} catch(err) {
process.stderr.write(err.message + “n”);
}
});
上面代码里,我们等待来自stdin标准输入流的数据,每当有数据可用,就假设它是个整型并把它解析到一个整型变量里,然后加1,并把结果输出到标准输出流。
可以通过下面命令来运行这个程序:
$ node plus_one.js
运行后程序就开始等待输入,如果你输入一个整数然后按回车,就会看到一个被加1以后的数字被显示到屏幕上。
可以通过按Ctrl-C来退出程序。
一个测试客户端
现在你要创建一个Node进程来使用前面的“+1应用”提供的计算服务。
首先创建一个名为plus_one_test.js的文件,内容见例8-7:
例 8-7: 测试+1应用(chapter8/07_plus_one_test.js)









