事件’exit’
当进程将要退出时触发。这是一个在固定时间检查模块状态(如单元测试)的好时机。需要注意的是 ‘exit’ 的回调结束后,主事件循环将不再运行,所以计时器也会失效:
process.on('exit', function() {
// 设置一个延迟执行
setTimeout(function() {
console.log('主事件循环已停止,所以不会执行');
}, 0);
console.log('退出前执行');
});
setTimeout(function() {
console.log('1');
}, 500);
事件’uncaughtException’
捕获那些咱没有 try catch 的异常错误:
process.on('uncaughtException', function() {
console.log('捕获到一个异常');
});
var a = '123';
a.a(); //触发异常事件
console.log('这句话扑街了,不会显示出来');
但常规不建议使用该粗略的异常捕获处理,建议使用 domains[https://nodejs.org/api/domain.html]
事件’SIGINT’
捕获当前进程接收到的信号(如按下了 ctrl + c):
process.on('SIGINT', function() {
console.log('收到 SIGINT 信号。');
});
console.log('试着按下 ctrl + C');
setTimeout(function() {
console.log('end');
}, 50000);
process.stdout
一个指向标准输出流(stdout)的 可写的流(Writable Stream):
另可使用 process.stdout.isTTY 来判断当前是否处于TTY上下文。
## process.stderr
一个指向标准错误流(stderr)的 可写的流(Writable Stream):
```process.stderr.write('输出一行标准错误流,效果跟stdout没差');```
## process.stdin
一个指向 标准输入流(stdin) 的可读流(Readable Stream)。标准输入流默认是暂停 (pause) 的,所以必须要调用 ```process.stdin.resume() ```来恢复 (resume) 接收:
process.stdin.on(‘end’, function() { process.stdout.write(‘end’); });
function gets(cb){ process.stdin.setEncoding(‘utf8’); //输入进入流模式(flowing-mode,默认关闭,需用resume开启),注意开启后将无法read到数据 //见 https://github.com/nodejs/node-v0.x-archive/issues/5813 process.stdin.resume(); process.stdin.on(‘data’, function(chunk) { console.log(‘start!’); //去掉下一行可一直监听输入,即保持标准输入流为开启模式 process.stdin.pause(); cb(chunk); }); console.log(‘试着在键盘敲几个字然后按回车吧’); }
gets(function(reuslt){ console.log(“[“+reuslt+”]”); //process.stdin.emit(‘end’); //触发end事件 });
## process.argv
返回当前命令行指令参数 ,但不包括node特殊(node-specific) 的命令行选项(参数)。常规第一个元素会是 'node', 第二个元素将是 .Js 文件的名称。接下来的元素依次是命令行传入的参数:
//试着执行 $node --harmony argv.js a b
console.log(process.argv); //[ ‘node’, ‘E:\github\nodeAPI\process\argv.js’, ‘a’, ‘b’ ] process.argv.forEach(function(val, index, array) { console.log(index + ‘: ‘ + val); });
## process.execArgv
与 process.argv 类似,不过是用于返回 node特殊(node-specific) 的命令行选项(参数)。另外所有文件名之后的参数都会被忽视:
//试着执行 $node –harmony execArgv a b –version console.log(process.execArgv); //[ ‘–harmony’ ] process.execArgv.forEach(function(val, index, array) { console.log(index + ‘: ‘ + val); });
## process.abort()
触发node的abort事件,退出当前进程:
process.abort(); console.log(‘在输出这句话之前就退出了’); ``` 还有一些详细的接口参照node库