Event: ‘exit’ 事件:’exit’
function () {}
当进程对象要退出时会触发此方法,这是检查模块状态(比如单元测试)的好时机。当’exit’被调用完成后主事件循环将终止,所以计时器将不会按计划执行。
监听exit行为的示例:
process.on(‘exit‘, function () {
process.nextTick(function () {
console.log(‘This will not run‘);
});
console.log(‘About to exit.‘);
});
Event: ‘uncaughtException’ 事件:’uncaughtException’
function (err) { }
当一个异常信息一路冒出到事件循环时,该方法被触发。如果该异常有一个监听器,那么默认的行为(即打印一个堆栈轨迹并退出)将不会发生。
监听uncaughtException事件的示例:
process.on(‘uncaughtException‘, function (err) {
console.log(‘Caught exception: ‘ + err);
});
setTimeout(function () {
console.log(‘This will still run.‘);
}, 500);
// Intentionally cause an exception, but don’t catch it.
nonexistentFunc();
console.log(‘This will not run.‘);
注意:就异常处理来说,uncaughtException是一个很粗糙的机制。在程序中使用try/catch可以更好好控制程序流程。而在服务器编程中,因为要持续运行,uncaughtException还是一个很有用的安全机制。
Signal Events 信号事件
function () {}
该事件会在进程接收到一个信号时被触发。可参见sigaction(2)中的标准POSIX信号名称列表,比如SIGINT,SIGUSR1等等。
监听 SIGINT的示例:
// Start reading from stdin so we don’t exit.
process.stdin.resume();
process.on(‘SIGINT‘, function () {
console.log(‘Got SIGINT. Press Control-D to exit.‘);
});
在大多数终端程序中,一个简易发送SIGINT信号的方法是在使用Control-C命令操作。
process.stdout
一个指向标准输出stdout的Writable Stream可写流。
示例:console.log的定义。
console.log = function (d) {
process.stdout.write(d + ‘\n‘);
};
process.stderr
一个指向错误的可写流,在这个流上的写操作是阻塞式的。
process.stdin
一个到标准输入的可读流Readable Stream。默认情况下标准输入流是暂停的,要从中读取内容需要调用方法process.stdin.resume()。