process 进程说明
process
对象是一个全局变量,它提供有关当前 Node.js 进程的信息并对其进行控制。 作为一个全局变量,它始终可供 Node.js 应用程序使用,无需使用 require()
。
属性使用篇
process.argv 获取命令行参数
$ node process-args.js one two=three four
// process-args.js
process.argv.forEach((val, index) => {
console.log(`${index}: ${val}`);
});
// outputs
0: /usr/local/bin/node
1: /Users/mjr/work/node/process-args.js
2: one
3: two=three
4: four
process.env 属性返回包含用户环境的对象
process.env
属性返回包含用户环境的对象。 参阅 [environ(7)](http://nodejs.cn/s/zvAzBK)
。
此对象的示例如下所示:
{
TERM: 'xterm-256color',
SHELL: '/usr/local/bin/bash',
USER: 'maciej',
PATH: '~/.bin/:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin',
PWD: '/Users/maciej',
EDITOR: 'vim',
SHLVL: '1',
HOME: '/Users/maciej',
LOGNAME: 'maciej',
_: '/usr/local/bin/node'
}
事件篇
- 三个标准流:process.stdout 标准输出、process.stdin 标准输入、process.stderr 标准错误输出
process
对象是 [EventEmitter](http://nodejs.cn/s/pGAddE)
的实例。
// 开始从stdin读取数据,以便进程不会退出。
// stdin流在默认情况下是暂停的,因此必须调用process.stdin.resume()以从中读取。另请注意,调用 process.stdin.resume()自身会将流切换到“旧”模式。
process.stdin.resume()
// 选中命令行工具 Ctrl + C 会触发事件,once次事件只被触发一次
process.once('SIGINT', () => {
console.log('Received SIGINT. Press Control-D to exit.')
})
// Using a single function to handle multiple signals
function handle (signal) {
console.log(`Received ${signal}`)
}
// 选中命令行工具 Ctrl + C 会触发事件
// process.on('SIGINT', handle)
// 默认的行为
process.on('SIGTERM', handle)
// 选中命令行工具 Ctrl + \ 会触发事件
process.on('SIGQUIT', handle)
// 选中命令行工具 Ctrl + back 会触发事件, 但只有window会被触发
process.on('SIGBREAK', handle)