process 进程说明

process 对象是一个全局变量,它提供有关当前 Node.js 进程的信息并对其进行控制。 作为一个全局变量,它始终可供 Node.js 应用程序使用,无需使用 require()

属性使用篇

process.argv 获取命令行参数

  1. $ node process-args.js one two=three four
  2. // process-args.js
  3. process.argv.forEach((val, index) => {
  4. console.log(`${index}: ${val}`);
  5. });
  6. // outputs
  7. 0: /usr/local/bin/node
  8. 1: /Users/mjr/work/node/process-args.js
  9. 2: one
  10. 3: two=three
  11. 4: four

process.env 属性返回包含用户环境的对象

process.env 属性返回包含用户环境的对象。 参阅 [environ(7)](http://nodejs.cn/s/zvAzBK)

  1. 此对象的示例如下所示:
  2. {
  3. TERM: 'xterm-256color',
  4. SHELL: '/usr/local/bin/bash',
  5. USER: 'maciej',
  6. PATH: '~/.bin/:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin',
  7. PWD: '/Users/maciej',
  8. EDITOR: 'vim',
  9. SHLVL: '1',
  10. HOME: '/Users/maciej',
  11. LOGNAME: 'maciej',
  12. _: '/usr/local/bin/node'
  13. }

事件篇

  • 三个标准流:process.stdout 标准输出、process.stdin 标准输入、process.stderr 标准错误输出

process 对象是 [EventEmitter](http://nodejs.cn/s/pGAddE) 的实例。

  1. // 开始从stdin读取数据,以便进程不会退出。
  2. // stdin流在默认情况下是暂停的,因此必须调用process.stdin.resume()以从中读取。另请注意,调用 process.stdin.resume()自身会将流切换到“旧”模式。
  3. process.stdin.resume()
  4. // 选中命令行工具 Ctrl + C 会触发事件,once次事件只被触发一次
  5. process.once('SIGINT', () => {
  6. console.log('Received SIGINT. Press Control-D to exit.')
  7. })
  8. // Using a single function to handle multiple signals
  9. function handle (signal) {
  10. console.log(`Received ${signal}`)
  11. }
  12. // 选中命令行工具 Ctrl + C 会触发事件
  13. // process.on('SIGINT', handle)
  14. // 默认的行为
  15. process.on('SIGTERM', handle)
  16. // 选中命令行工具 Ctrl + \ 会触发事件
  17. process.on('SIGQUIT', handle)
  18. // 选中命令行工具 Ctrl + back 会触发事件, 但只有window会被触发
  19. process.on('SIGBREAK', handle)