ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[TOC] # 介绍 文档:[http://nodejs.cn/api/process.html](http://nodejs.cn/api/process.html) 官方解释:process 对象是一个 global 全局变量,提供有关信息,控制当前 Node.js 进程。作为一个对象,它对于 Node.js 应用程序始终是可用的,故无需使用 `require()`。 process(进程)其实就是存在 nodejs 中的一个全局变量。 process 内容: ``` $ node process.js process { title: 'node', version: 'v4.4.4', moduleLoadList: [....], versions: { http_parser: '2.5.2', node: '4.4.4', v8: '4.5.103.35', uv: '1.8.0', zlib: '1.2.8', ares: '1.10.1-DEV', icu: '56.1', modules: '46', openssl: '1.0.2h' }, arch: 'x64', platform: 'darwin', release: { name: 'node', lts: 'Argon', sourceUrl: 'https://nodejs.org/download/release/v4.4.4/node-v4.4.4.tar.gz', headersUrl: 'https://nodejs.org/download/release/v4.4.4/node-v4.4.4-headers.tar.gz' }, argv: [ '/Users/tugenhua/.nvm/versions/node/v4.4.4/bin/node', '/Users/tugenhua/个人demo/process.js' ], execArgv: [], env: { TERM_PROGRAM: 'Apple_Terminal', SHELL: '/bin/zsh', TERM: 'xterm-256color', TMPDIR: '/var/folders/l7/zndlx1qs05v29pjhvkgpmhjm0000gn/T/', Apple_PubSub_Socket_Render: '/private/tmp/com.apple.launchd.7Ax4C1EWMx/Render', TERM_PROGRAM_VERSION: '404', TERM_SESSION_ID: '82E05668-442D-4180-ADA3-8CF64D85E5A9', USER: 'tugenhua', SSH_AUTH_SOCK: '/private/tmp/com.apple.launchd.MYOMheYcL3/Listeners', PATH: '/Users/tugenhua/.nvm/versions/node/v4.4.4/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin', PWD: '/Users/tugenhua/个人demo', LANG: 'zh_CN.UTF-8', XPC_FLAGS: '0x0', XPC_SERVICE_NAME: '0', SHLVL: '1', HOME: '/Users/tugenhua', LOGNAME: 'tugenhua', SECURITYSESSIONID: '186a8', OLDPWD: '/Users/tugenhua/工作文档/sns_pc', ZSH: '/Users/tugenhua/.oh-my-zsh', PAGER: 'less', LESS: '-R', LC_CTYPE: 'zh_CN.UTF-8', LSCOLORS: 'Gxfxcxdxbxegedabagacad', NVM_DIR: '/Users/tugenhua/.nvm', NVM_NODEJS_ORG_MIRROR: 'https://nodejs.org/dist', NVM_IOJS_ORG_MIRROR: 'https://iojs.org/dist', NVM_RC_VERSION: '', MANPATH: '/Users/tugenhua/.nvm/versions/node/v4.4.4/share/man:/usr/local/share/man:/usr/share/man:/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/share/man:/Applications/Xcode.app/Contents/Developer/usr/share/man:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/share/man', NVM_PATH: '/Users/tugenhua/.nvm/versions/node/v4.4.4/lib/node', NVM_BIN: '/Users/tugenhua/.nvm/versions/node/v4.4.4/bin', _: '/Users/tugenhua/.nvm/versions/node/v4.4.4/bin/node', __CF_USER_TEXT_ENCODING: '0x1F5:0x19:0x34' }, pid: 14034, features: { debug: false, uv: true, ipv6: true, tls_npn: true, tls_sni: true, tls_ocsp: true, tls: true }, _needImmediateCallback: false, config: {}, nextTick: [Function: nextTick], _tickCallback: [Function: _tickCallback], _tickDomainCallback: [Function: _tickDomainCallback], stdout: [Getter], stderr: [Getter], stdin: [Getter], openStdin: [Function], exit: [Function], kill: [Function], mainModule: Module { id: '.', exports: {}, parent: null, filename: '/Users/tugenhua/个人demo/process.js', loaded: false, children: [], paths: [ '/Users/tugenhua/个人demo/node_modules', '/Users/tugenhua/node_modules', '/Users/node_modules', '/node_modules' ] } } ``` # `process.env` 官方: `process.env` 属性返回一个包含用户环境信息的对象。返回项目运行所在环境的一些信息。 文档:[process_process_env](http://nodejs.cn/api/process.html#process_process_env) # `process.argv` 命令行参数可通过系统变量`process.argv`获取。 `process.argv` 返回一个数组:第一个是 node 第二个是脚本文件 第三个是输入的参数,`process.argv[2]`开始得到才是真正的参数部分。 > [yargs-parser](https://github.com/yargs/yargs-parser) # `process.stdin` `stdout`、`stdin`和`stderr`是标准流(standard streams),当程序执行时,它们连接程序及其环境之间的输入和输出通信通道。 流通常指的是数据的流动。你可以把流想象成工厂里的传送带,连接着不同的机器(在我们这里是程序)。不同的机器可以以某种方式被安排、引导并与皮带(管道)连接以产生特定的结果。 就像我们可以连接物理 I/O 设备(通过鼠标输入,通过监视器输出)一样,标准流将其抽象出来,赋予我们代码的可组合能力。 ![](https://img.kancloud.cn/f7/27/f727d21869a74a24d30da2a7b00697cd_730x361.png) 就像我们可以从小的命令中组合出强大的 Linux 命令一样,我们可以使用 Node.js 标准流来实现同样的效果。 当我们运行一个 Node.js 程序时,会启动一个进程来执行该程序。 [GNU 文档](https://www.gnu.org/software/libc/manual/html_node/Processes.html)将进程定义为系统资源分配的基本单元。每个进程都有自己的地址空间和(通常)一个控制线程。一个进程意味着执行一个程序;你可以让多个进程执行同一个程序,但是每个进程在自己的地址空间中都有自己的程序副本,并且独立于其他副本执行该程序。 每个进程会使用三个打开的文件描述符进行初始化,分别是`stdin`、`stdout`和`stderr`。 这三个文件描述符统称为标准流。 一个进程启动时,同时就会有一组标准流,我们可以通过 Node.js 中的 process 对象访问它们。 标准流被当作文件来处理。访问任何文件的一种简单方法是使用与之相关联的唯一文件描述符。在这些标准流的情况下,每个标准流都有唯一的值。 * [`process.stdin`](https://nodejs.org/api/process.html#processstdin)(0): The standard input stream, which is a source of input for the program * [`process.stdout`](https://nodejs.org/api/process.html#processstdout)(1): The standard output stream, which is a source of output from the program * [`process.stderr`](https://nodejs.org/api/process.html#processstderr)(2): The standard error stream, which is used for error messages and diagnostics issued by the program > [Using stdout, stdin, and stderr in Node.js](https://blog.logrocket.com/using-stdout-stdin-stderr-node-js/) # Nodejs 进程信号 [https://zhuanlan.zhihu.com/p/148538831](https://zhuanlan.zhihu.com/p/148538831) [https://www.jianshu.com/p/7a11ac2a973b](https://www.jianshu.com/p/7a11ac2a973b) # 参考 [node 中的 process 模块](https://github.com/SunShinewyf/issue-blog/issues/37)