From c1a3428894e95d5179ff885032a3f46a963df497 Mon Sep 17 00:00:00 2001 From: h7lin Date: Fri, 6 Sep 2019 00:08:14 +0800 Subject: [PATCH] v12.9.1 --- process/a_note_on_process_i_o.md | 13 ++-- process/avoiding_duplicate_warnings.md | 6 +- process/event_beforeexit.md | 19 ++++++ process/event_multipleresolves.md | 8 +-- process/event_uncaughtexception.md | 18 ++++-- process/event_unhandledrejection.md | 26 ++++---- process/event_warning.md | 20 +++--- process/exit_codes.md | 41 ++++++------- process/process.md | 5 ++ process/process_abort.md | 4 +- .../process_allowednodeenvironmentflags.md | 45 +++++--------- process/process_arch.md | 6 +- process/process_channel.md | 6 +- process/process_chdir_directory.md | 4 +- process/process_config.md | 9 +-- process/process_connected.md | 7 +-- process/process_cpuusage_previousvalue.md | 14 ++--- process/process_debugport.md | 2 +- process/process_disconnect.md | 7 ++- .../process_dlopen_module_filename_flags.md | 30 ++++----- .../process_emitwarning_warning_options.md | 36 +++++------ ...cess_emitwarning_warning_type_code_ctor.md | 54 ++++++++-------- process/process_env.md | 11 +++- process/process_execargv.md | 12 ++-- process/process_getegid.md | 6 +- process/process_geteuid.md | 8 +-- process/process_getgid.md | 8 +-- process/process_getgroups.md | 8 +-- process/process_getuid.md | 8 +-- ...ess_hasuncaughtexceptioncapturecallback.md | 5 +- process/process_hrtime_bigint.md | 13 ++-- process/process_hrtime_time.md | 21 ++++--- process/process_initgroups_user_extragroup.md | 13 ++-- process/process_kill_pid_signal.md | 25 ++++---- process/process_mainmodule.md | 11 ++-- process/process_memoryusage.md | 21 ++++--- process/process_nexttick_callback_args.md | 12 +--- process/process_nodeprecation.md | 7 +-- process/process_pid.md | 4 +- process/process_platform.md | 12 ++-- process/process_ppid.md | 6 +- process/process_release.md | 36 +++++------ ...end_message_sendhandle_options_callback.md | 11 ++-- process/process_setegid_id.md | 17 +++--- process/process_seteuid_id.md | 17 +++--- process/process_setgid_id.md | 18 +++--- process/process_setuid_id.md | 17 +++--- process/process_stdin.md | 5 +- process/process_throwdeprecation.md | 5 +- process/process_title.md | 8 ++- process/process_umask_mask.md | 4 +- process/process_uptime.md | 4 +- process/process_version.md | 4 +- process/process_versions.md | 35 ++++++----- process/signal_events.md | 61 +++++++++---------- ...rning_using_uncaughtexception_correctly.md | 2 +- 56 files changed, 420 insertions(+), 415 deletions(-) diff --git a/process/a_note_on_process_i_o.md b/process/a_note_on_process_i_o.md index 1cd4af55..b07d7a98 100644 --- a/process/a_note_on_process_i_o.md +++ b/process/a_note_on_process_i_o.md @@ -2,19 +2,16 @@ `process.stdout` and `process.stderr` 与 Node.js 中其他 streams 在重要的方面有不同: 1. [`console.log()`][] 和 [`console.error()`][] 内部分别是由它们实现的。 -2. 他们不能被关闭 (调用[`end()`][]将会抛出异常)。 -3. 他们永远不会触发 [`'finish'`][] 事件。 -4. 写操作是否为同步,取决于连接的是什么流以及操作系统是 Windows 还是 POSIX : - - - Files: *同步* 在 Windows 和 POSIX 下 - - TTYs (Terminals): *异步* 在 Windows 下, *同步* 在 POSIX 下 - - Pipes (and sockets): *同步* 在 Windows 下, *异步* 在 POSIX 下 +2. 写操作是否为同步,取决于连接的是什么流以及操作系统是 Windows 还是 POSIX : + - 文件:在 Windows 和 POSIX 上是同步的。 + - TTY(终端):在 Windows 上是异步的,在 POSIX 上是同步的。 + - 管道(和 socket):在 Windows 上是同步的,在 POSIX 上是异步的。 这些行为部分是历史原因,改变他们可能导致向后不兼容,而且他们的行为也符合部分用户的预期。 同步写避免了调用 `console.log()` 或 `console.error()` 产生不符合预期的交错输出问题,或是在异步写完成前调用了`process.exit()`导致未写完整。 查看[`process.exit()`][] 获取更多信息。 -***警告***: 同步写将会阻塞事件循环直到写完成。 有时可能一瞬间就能写到一个文件,但当系统处于高负载时,管道的接收端可能不会被读取、缓慢的终端或文件系统,因为事件循环被阻塞的足够频繁且足够长的时间,这些可能会给系统性能带来消极的影响。当你向一个交互终端会话写时这可能不是个问题,但当生产日志到进程的输出流时要特别留心。 +同步写将会阻塞事件循环直到写完成。 有时可能一瞬间就能写到一个文件,但当系统处于高负载时,管道的接收端可能不会被读取、缓慢的终端或文件系统,因为事件循环被阻塞的足够频繁且足够长的时间,这些可能会给系统性能带来消极的影响。当你向一个交互终端会话写时这可能不是个问题,但当生产日志到进程的输出流时要特别留心。 如果要检查一个流是否连接到了一个 [TTY][] 上下文, 检查 `isTTY` 属性。 diff --git a/process/avoiding_duplicate_warnings.md b/process/avoiding_duplicate_warnings.md index 2581dec6..3550af9f 100644 --- a/process/avoiding_duplicate_warnings.md +++ b/process/avoiding_duplicate_warnings.md @@ -6,12 +6,12 @@ function emitMyWarning() { if (!emitMyWarning.warned) { emitMyWarning.warned = true; - process.emitWarning('Only warn once!'); + process.emitWarning('只警告一次'); } } emitMyWarning(); -// Emits: (node: 56339) Warning: Only warn once! +// 触发: (node: 56339) Warning: 只警告一次 emitMyWarning(); -// Emits nothing +// 什么都没触发。 ``` diff --git a/process/event_beforeexit.md b/process/event_beforeexit.md index 2c1c272b..71f8b3d5 100644 --- a/process/event_beforeexit.md +++ b/process/event_beforeexit.md @@ -11,3 +11,22 @@ added: v0.11.12 除非打算安排额外的工作,否则不应将 `'beforeExit'` 用作 `'exit'` 事件的替代方案。 +```js +process.on('beforeExit', (code) => { + console.log('进程 beforeExit 事件的代码: ', code); +}); + +process.on('exit', (code) => { + console.log('进程 exit 事件的代码: ', code); +}); + +console.log('此消息最新显示'); + +// 打印: +// 此消息最新显示 +// 进程 beforeExit 事件的代码: 0 +// 进程 exit 事件的代码: 0 +``` + + + diff --git a/process/event_multipleresolves.md b/process/event_multipleresolves.md index cd72cbca..3c4b3d77 100644 --- a/process/event_multipleresolves.md +++ b/process/event_multipleresolves.md @@ -13,11 +13,9 @@ added: v10.12.0 * 解决后拒绝。 * 拒绝后解决。 -这对于在使用 Promise 构造函数时跟踪应用程序中的错误很有用。 -否则,由于处于死区,这些错误会被默默地吞没。 - -建议结束此类错误的进程,因为该进程可能处于未定义状态。 -使用 Promise 构造函数时,请确保每次调用时确保触发 `resolve()` 或 `reject()` 函数,并且永远不会在同一个调用中同时调用这两个函数。 +这对于在使用 Promise 构造函数时跟踪应用程序中的潜在错误非常有用,因为会以静默方式吞没多个解决。 +但是,此事件的发生并不一定表示错误。 +例如,[`Promise.race()`] 可以触发 `'multipleResolves'` 事件。 ```js process.on('multipleResolves', (type, promise, reason) => { diff --git a/process/event_uncaughtexception.md b/process/event_uncaughtexception.md index 56d54cb7..d62734a6 100644 --- a/process/event_uncaughtexception.md +++ b/process/event_uncaughtexception.md @@ -1,19 +1,27 @@ +* `err` {Error} 未捕获的异常。 +* `origin` {string} 表明异常是来自未处理的拒绝还是来自同步的错误。 可以是 `'uncaughtException'` 或 `'unhandledRejection'`。 + 当未捕获的 JavaScript 异常一直冒泡回到事件循环时,会触发 `'uncaughtException'` 事件。 默认情况下,Node.js 通过将堆栈跟踪打印到 `stderr` 并使用退出码 `1` 来处理此类异常,从而覆盖任何先前设置的 [`process.exitCode`]。 为 `'uncaughtException'` 事件添加处理程序会覆盖此默认行为。 或者,更改 `'uncaughtException'` 处理程序中的 [`process.exitCode`],这将导致进程退出并提供退出码。 否则,在存在这样的处理程序的情况下,进程将以 `0` 退出。 -调用监听器函数时,将 `Error` 对象作为唯一参数传入。 - - ```js -process.on('uncaughtException', (err) => { - fs.writeSync(1, `捕获的异常:${err}\n`); +process.on('uncaughtException', (err, origin) => { + fs.writeSync( + process.stderr.fd, + `捕获的异常: ${err}\n` + + `异常的来源: ${origin}` + ); }); setTimeout(() => { diff --git a/process/event_unhandledrejection.md b/process/event_unhandledrejection.md index 5bf8db70..b1f24ad7 100644 --- a/process/event_unhandledrejection.md +++ b/process/event_unhandledrejection.md @@ -10,30 +10,30 @@ changes: a process warning. --> -如果在事件循环的一次轮询中,一个 `Promise` 被 rejected,并且此 `Promise` 没有绑定错误处理器,`'unhandledRejection` 事件会被触发。 -当使用 Promise 进行编程时,异常会以 "rejected promises" 的形式封装。Rejection 可以被 [`promise.catch()`] 捕获并处理,并且在 `Promise` 链中传播。`'unhandledRejection` 事件在探测和跟踪 promise 被 rejected,并且 rejection 未被处理的场景中是很有用的。 +* `reason` {Error|any} 此对象包含了 promise 被拒绝的相关信息(通常是一个 [`Error`] 对象)。 +* `promise` 被拒绝的 promise 对象。 -此事件监听器的回调函数被传递如下参数: +如果在事件循环的一次轮询中,一个 `Promise` 被拒绝,并且此 `Promise` 没有绑定错误处理器,`'unhandledRejection` 事件会被触发。 +当使用 Promise 进行编程时,异常会以被拒绝的 promise 的形式封装。 +拒绝可以被 [`promise.catch()`] 捕获并处理,并且在 `Promise` 链中传播。`'unhandledRejection` 事件在探测和跟踪 promise 被拒绝,并且拒绝未被处理的场景中是很有用的。 -* `reason` {Error|any} 此对象包含了 promise 被 rejected 的相关信息(通常是一个 [`Error`] 对象)。 -* `p` 被 rejected 的 promise 对象。 ```js -process.on('unhandledRejection', (reason, p) => { - console.log('未处理的 rejection:', p, '原因:', reason); +process.on('unhandledRejection', (reason, promise) => { + console.log('未处理的拒绝:', promise, '原因:', reason); // 记录日志、抛出错误、或其他逻辑。 }); somePromise.then((res) => { - return reportToUser(JSON.pasre(res)); // 故意输错 `pasre`。 -}); // 没有 `.catch` 或 `.then`。 + return reportToUser(JSON.pasre(res)); // 故意输错 (`pasre`)。 +}); // 没有 `.catch()` 或 `.then()`。 ``` -如下代码也会触发`'unhandledRejection'`事件 +如下代码也会触发`'unhandledRejection'`事件: ```js function SomeResource() { - // 将 loaded 的状态设置为一个 rejected promise。 + // 将 loaded 的状态设置为一个拒绝的 promise。 this.loaded = Promise.reject(new Error('错误信息')); } @@ -41,7 +41,7 @@ const resource = new SomeResource(); // resource.loaded 上没有 .catch 或 .then。 ``` -在例子中,可以像在其他 `'unhandledRejection'` 事件的典型场景中一样,跟踪开发者错误导致的 rejection。 +在例子中,可以像在其他 `'unhandledRejection'` 事件的典型场景中一样,跟踪开发者错误导致的拒绝。 为了解决这样的错误,`resource.loaded` 中可以加一个不做任何操作的 [`.catch(() => { })`][`promise.catch()`] 处理器, -这样可以阻止 `'unhandledRejection'` 事件的触发。或者也可以使用 [`'rejectionHandled'`] 事件来解决。 +这样可以阻止 `'unhandledRejection'` 事件的触发。 diff --git a/process/event_warning.md b/process/event_warning.md index 5485d1f9..652c06e5 100644 --- a/process/event_warning.md +++ b/process/event_warning.md @@ -2,16 +2,16 @@ added: v6.0.0 --> -* `'warning'`事件监听器的回调函数,参数只有一个,其值为`Error` 对象。此对象有三个重要的属性用来描述告警: - * `name` {string} 告警的名称(目前默认值是 `Warning`)。 +* `warning` {Error} 告警的主要属性有: + * `name` {string} 告警的名称。**默认值:** `'Warning'`。 * `message` {string} 系统提供的对此告警的描述。 * `stack` {string} 当告警触发时,包含代码位置的堆栈信息。 -任何时候Node.js发出进程告警,都会触发`'warning'`事件。 +任何时候 Node.js 触发进程告警,都会触发 `'warning'` 事件。 进程告警与进程错误的相似之处,在于两者都描述了需要引起用户注意的异常条件。 -区别在于,告警不是Node.js和Javascript错误处理流程的正式组成部分。 -一旦探测到可能导致应用性能问题,缺陷或安全隐患相关的代码实践,Node.js就可发出告警。 +区别在于,告警不是 Node.js 和 Javascript 错误处理流程的正式组成部分。 +一旦探测到可能导致应用性能问题,缺陷或安全隐患相关的代码实践,Node.js 就可发出告警。 ```js process.on('warning', (warning) => { @@ -46,12 +46,12 @@ $ node --no-warnings > Do not do that! ``` -`--trace-warnings`命令行选项可以让默认的console输出告警信息时,包含告警的全部堆栈信息。 +`--trace-warnings`命令行选项可以让默认的控制台输出告警信息时,包含告警的全部堆栈信息。 -使用`--throw-deprecation`命令行选项标志启动Node.js,会使得custom deprecation warning作为异常信息抛出来。 +使用`--throw-deprecation`命令行选项标志启动Node.js,会使得自定义的废弃警告作为异常信息抛出来。 -使用`--trace-deprecation`命令行选项标志,会使得custom deprecation warning打印到`stderr`,包括其堆栈信息。 +使用`--trace-deprecation`命令行选项标志,会使得自定义的废弃警告打印到`stderr`,包括其堆栈信息。 -使用`--no-deprecation`命令行选项标志,会阻止报告所有的custom deprecation warning。 +使用`--no-deprecation`命令行选项标志,会阻止报告所有的自定义的废弃警告。 -`*-deprecation` 命令行选项标志,只会影响使用名字为`DeprecationWarning`的告警。 +`*-deprecation` 命令行选项标志,只会影响使用名字为 `'DeprecationWarning'` 的告警。 diff --git a/process/exit_codes.md b/process/exit_codes.md index d4cc1eb0..8309d67c 100644 --- a/process/exit_codes.md +++ b/process/exit_codes.md @@ -1,28 +1,23 @@ -正常情况下,如果没有异步操作正在等待,那么Node.js会以状态码`0`退出,其他情况下,会 -用如下的状态码: +正常情况下,如果没有异步操作正在等待,那么 Node.js 会以状态码 `0` 退出,其他情况下,会用如下的状态码: * `1` **未捕获异常** - 有一个未被捕获的异常, - 并且没被一个 domain 或 an [`'uncaughtException'`][] 事件处理器处理。 -* `2` - 未被使用 (Bash为防内部滥用而保留) -* `3` **内部JavaScript 分析错误** - Node.js的内部的JavaScript源代码 - 在引导进程中导致了一个语法分析错误。 - 这是非常少见的, 一般只会在开发Node.js本身的时候出现。 -* `4` **内部JavaScript执行失败** - - 引导进程执行Node.js的内部的JavaScript源代码时,返回函数值失败。 - 这是非常少见的, 一般只会在开发Node.js本身的时候出现。 -* `5` **致命错误** - 在V8中有一个致命的错误. - 比较典型的是以`FATALERROR`为前缀从stderr打印出来的消息。 -* `6` **非函数的内部异常处理** - 发生了一个内部异常,但是内部异常处理函数 - 被设置成了一个非函数,或者不能被调用。 -* `7` **内部异常处理运行时失败** - 有一个不能被捕获的异常。 - 在试图处理这个异常时,处理函数本身抛出了一个错误。 - 这是可能发生的, 比如, 如果一个 [`'uncaughtException'`][] 或者 - `domain.on('error')` 处理函数抛出了一个错误。 -* `8` - 未被使用. 在之前版本的Node.js, 退出码8有时候表示一个未被捕获的异常。 + 并且没被 domain 或 [`'uncaughtException'`][] 事件处理器处理。 +* `2` - 未被使用 (Bash 为防内部滥用而保留) +* `3` **内部的 JavaScript 解析错误** - Node.js 内部的 JavaScript 源代码在引导进程中导致了一个语法解析错误。 + 这是非常少见的, 一般只会在开发 Node.js 本身的时候出现。 +* `4` **内部的 JavaScript 执行失败** - 引导进程执行 Node.js 内部的 JavaScript 源代码时,返回函数值失败。 + 这是非常少见的, 一般只会在开发 Node.js 本身的时候出现。 +* `5` **致命错误** - 在 V8 中有一个致命的错误。 + 比较典型的是以 `FATALERROR` 为前缀从 stderr 打印出来的消息。 +* `6` **非函数的内部异常处理** - 发生了一个内部异常,但是内部异常处理函数被设置成了一个非函数,或者不能被调用。 +* `7` **内部异常处理运行时失败** - 有一个不能被捕获的异常,在试图处理这个异常时,处理函数本身抛出了一个错误。 + 这是可能发生的, 比如, 如果一个 [`'uncaughtException'`][] 或者 `domain.on('error')` 处理函数抛出了一个错误。 +* `8` - 未被使用,在之前版本的 Node.js, 退出码 8 有时候表示一个未被捕获的异常。 * `9` - **不可用参数** - 也许是某个未知选项没有确定,或者没给必需要的选项填值。 -* `10` **内部JavaScript运行时失败** - 调用引导函数时, - 引导进程执行Node.js的内部的JavaScript源代码抛出错误。 - 这是非常少见的, 一般只会在开发Node.js本身的时候出现。 +* `10` **内部的 JavaScript 运行时失败** - 调用引导函数时,引导进程执行 Node.js 内部的 JavaScript 源代码抛出错误。 + 这是非常少见的, 一般只会在开发 Node.js 本身的时候出现。 * `12` **不可用的调试参数** - `--inspect` 和/或 `--inspect-brk` 选项已设置,但选择的端口号无效或不可用。 -* `>128` **退出信号** - 如果Node.js的接收信号致命诸如 `SIGKILL` 或 `SIGHUP`,那么它的退出代码将是 `128` 加上信号的码值。 这是POSIX的标准做法,因为退出码被定义为7位整数,并且信号退出设置高位,然后包含信号码值。 +* `>128` **退出信号** - 如果 Node.js 的接收信号致命诸如 `SIGKILL` 或 `SIGHUP`,那么它的退出代码将是 `128` 加上信号的码值。 + 这是 POSIX 的标准做法,因为退出码被定义为 7 位整数,并且信号退出设置高位,然后包含信号码值。 + 例如,信号 `SIGABRT` 的值为 `6`,因此预期的退出代码将为 `128` + `6` 或 `134`。 diff --git a/process/process.md b/process/process.md index 0cb79e50..b1a1f0c6 100644 --- a/process/process.md +++ b/process/process.md @@ -4,4 +4,9 @@ `process` 对象是一个全局变量,它提供有关当前 Node.js 进程的信息并对其进行控制。 作为一个全局变量,它始终可供 Node.js 应用程序使用,无需使用 `require()`。 +它也可以使用 `require()` 显式地访问: + +```js +const process = require('process'); +``` diff --git a/process/process_abort.md b/process/process_abort.md index 1cee62d4..49574e25 100644 --- a/process/process_abort.md +++ b/process/process_abort.md @@ -2,5 +2,7 @@ added: v0.7.0 --> -`process.abort()`方法会使Node.js进程立即结束,并生成一个core文件。 +`process.abort()` 方法会使 Node.js 进程立即结束,并生成一个核心文件。 + +[`Worker`] 线程中没有此特性。 diff --git a/process/process_allowednodeenvironmentflags.md b/process/process_allowednodeenvironmentflags.md index f4348d32..8151379b 100644 --- a/process/process_allowednodeenvironmentflags.md +++ b/process/process_allowednodeenvironmentflags.md @@ -4,30 +4,19 @@ added: v10.10.0 * {Set} -The `process.allowedNodeEnvironmentFlags` property is a special, -read-only `Set` of flags allowable within the [`NODE_OPTIONS`][] -environment variable. - -`process.allowedNodeEnvironmentFlags` extends `Set`, but overrides -`Set.prototype.has` to recognize several different possible flag -representations. `process.allowedNodeEnvironmentFlags.has()` will -return `true` in the following cases: - -- Flags may omit leading single (`-`) or double (`--`) dashes; e.g., - `inspect-brk` for `--inspect-brk`, or `r` for `-r`. -- Flags passed through to V8 (as listed in `--v8-options`) may replace - one or more *non-leading* dashes for an underscore, or vice-versa; - e.g., `--perf_basic_prof`, `--perf-basic-prof`, `--perf_basic-prof`, - etc. -- Flags may contain one or more equals (`=`) characters; all - characters after and including the first equals will be ignored; - e.g., `--stack-trace-limit=100`. -- Flags *must* be allowable within [`NODE_OPTIONS`][]. - -When iterating over `process.allowedNodeEnvironmentFlags`, flags will -appear only *once*; each will begin with one or more dashes. Flags -passed through to V8 will contain underscores instead of non-leading -dashes: +`process.allowedNodeEnvironmentFlags` 属性是 [`NODE_OPTIONS`] 环境变量中允许的特殊只读标志的 `Set`。 + +`process.allowedNodeEnvironmentFlags` 扩展了 `Set`,但重写了 `Set.prototype.has` 以识别几种不同的可能标志的表示。 +在以下情况下,`process.allowedNodeEnvironmentFlags.has()` 将会返回 `true`: + +- 标志可以省略前导单(`-`)或双(`--`)破折号。例如,`inspect-brk` 用于 `--inspect-brk`,或 `r` 用于 `-r`。 +- 传给 V8 的标志(如 `--v8-options` 中所列)可以替换下划线的一个或多个非前导短划线,反之亦然。例如,`--perf_basic_prof`、`--perf-basic-prof`、`--perf_basic-prof` 等。 +- 标志可以包含一个或多个等号(`=`)字符。包含第一个等号后的所有字符都将被忽略。例如,`--stack-trace-limit=100`。 +- 在 [`NODE_OPTIONS`] 中必须允许标志。 + +当迭代 `process.allowedNodeEnvironmentFlags` 时,标志只出现一次。 +每个都将会以一个或多个破折号开头。 +传给 V8 的标志将包含下划线而不是非前导破折号: ```js process.allowedNodeEnvironmentFlags.forEach((flag) => { @@ -38,11 +27,7 @@ process.allowedNodeEnvironmentFlags.forEach((flag) => { }); ``` -The methods `add()`, `clear()`, and `delete()` of -`process.allowedNodeEnvironmentFlags` do nothing, and will fail -silently. +`process.allowedNodeEnvironmentFlags` 的 `add()`、`clear()` 和 `delete()` 方法不执行任何操作,并且将会以静默方式失败。 -If Node.js was compiled *without* [`NODE_OPTIONS`][] support (shown in -[`process.config`][]), `process.allowedNodeEnvironmentFlags` will -contain what *would have* been allowable. +如果在没有 [`NODE_OPTIONS`] 支持的情况下编译 Node.js(在 [`process.config`] 中显示),则 `process.allowedNodeEnvironmentFlags` 将会包含允许的内容。 diff --git a/process/process_arch.md b/process/process_arch.md index d28d8cdb..5e7d1d6b 100644 --- a/process/process_arch.md +++ b/process/process_arch.md @@ -4,9 +4,9 @@ added: v0.5.0 * {string} -`process.arch`属性返回一个表示操作系统CPU架构的字符串,Node.js二进制文件是为这些架构编译的。 -例如 -`'arm'`, `'arm64'`, `'ia32'`, `'mips'`, `'mipsel'`, `'ppc'`, `'ppc64'`, `'s390'`, `'s390x'`, `'x32'`, 或 `'x64'`。 +`process.arch` 属性返回一个表示操作系统 CPU 架构的字符串,Node.js 二进制文件是为这些架构编译的。 + +目前可能的值是:`'arm'`、`'arm64'`、`'ia32'`、`'mips'`、`'mipsel'`、`'ppc'`、`'ppc64'`、`'s390'`、`'s390x'`、`'x32'` 或 `'x64'`。 ```js console.log(`This processor architecture is ${process.arch}`); diff --git a/process/process_channel.md b/process/process_channel.md index 8ffe360b..db9bc9eb 100644 --- a/process/process_channel.md +++ b/process/process_channel.md @@ -2,5 +2,7 @@ added: v7.1.0 --> -如果Node.js进程是由IPC channel(请看 [Child Process][] 文档) 方式创建的,`process.channel`属性保存IPC channel的引用。 -如果IPC channel不存在,此属性值为`undefined`。 +* {Object} + +如果 Node.js 进程是由 IPC 通道(参阅[子进程][Child Process]文档)方式创建的,`process.channel` 属性保存 IPC 通道的引用。 +如果 IPC 通道不存在,则此属性值为 `undefined`。 diff --git a/process/process_chdir_directory.md b/process/process_chdir_directory.md index d66d7884..9e27b8d4 100644 --- a/process/process_chdir_directory.md +++ b/process/process_chdir_directory.md @@ -4,7 +4,7 @@ added: v0.1.17 * `directory` {string} -`process.chdir()`方法变更Node.js进程的当前工作目录,如果变更目录失败会抛出异常(例如,如果指定的目录不存在)。 +`process.chdir()` 方法变更 Node.js 进程的当前工作目录,如果变更目录失败会抛出异常(例如,如果指定的 `directory` 不存在)。 ```js console.log(`Starting directory: ${process.cwd()}`); @@ -16,3 +16,5 @@ try { } ``` +此特性在 [`Worker`] 线程中不可用。 + diff --git a/process/process_config.md b/process/process_config.md index ccf5c470..1612a791 100644 --- a/process/process_config.md +++ b/process/process_config.md @@ -4,8 +4,8 @@ added: v0.7.7 * {Object} -`process.config` 属性返回一个Javascript对象。此对象描述了用于编译当前Node.js执行程序时涉及的配置项信息。 -这与执行`./configure`脚本生成的`config.gypi`文件结果是一样的。 +`process.config` 属性返回一个 `Object`,其中包含用于编译当前 Node.js 可执行文件的配置选项的 JavaScript 表示形式。 +这与运行 `./configure` 脚本时生成的 `config.gypi` 文件相同。 可能的输出样例: @@ -21,6 +21,7 @@ added: v0.7.7 variables: { host_arch: 'x64', + napi_build_version: 4, node_install_npm: 'true', node_prefix: '', node_shared_cares: 'false', @@ -32,11 +33,11 @@ added: v0.7.7 node_shared_openssl: 'false', strict_aliasing: 'true', target_arch: 'x64', - v8_use_snapshot: 'true' + v8_use_snapshot: 1 } } ``` -*注意*: `process.config`属性值**不是**只读的,在Node.js生态系统中已经有模块扩展,修改或完全替换了`process.config`的值。 +`process.config` 属性值不是只读的,在 Node.js 生态系统中已经有模块扩展、修改或完全替换了 `process.config` 的值。 diff --git a/process/process_connected.md b/process/process_connected.md index 714f3ddd..0342302f 100644 --- a/process/process_connected.md +++ b/process/process_connected.md @@ -4,10 +4,9 @@ added: v0.7.2 * {boolean} -如果Node.js进程是由IPC channel方式创建的(请看[Child Process子进程][] 和 [Cluster集群][] 文档), -只要IPC channel保持连接,`process.connected`属性就会返回`true`。 -`process.disconnect()`被调用后,此属性会返回`false`。 +如果 Node.js 进程是由 IPC 通道(参阅[子进程][Child Process]和[集群][Cluster]的文档)的方式创建,则只要 IPC 通道保持连接,`process.connected` 属性就会返回 `true`。 +`process.disconnect()` 被调用后,此属性会返回 `false`。 -`process.connected`如果为`false`,则不能通过IPC channel使用`process.send()`发送信息。 +一旦 `process.connected` 为 `false`,则不能通过 IPC 通道使用 `process.send()` 发送信息。 diff --git a/process/process_cpuusage_previousvalue.md b/process/process_cpuusage_previousvalue.md index be830b60..499146e0 100644 --- a/process/process_cpuusage_previousvalue.md +++ b/process/process_cpuusage_previousvalue.md @@ -2,22 +2,22 @@ added: v6.1.0 --> -* `previousValue` {Object} 上一次调用此方法的返回值 - `process.cpuUsage()` -* Returns: {Object} +* `previousValue` {Object} 上一次调用 `process.cpuUsage()` 的返回值。 +* 返回: {Object} * `user` {integer} * `system` {integer} -`process.cpuUsage()`方法返回包含当前进程的用户CPU时间和系统CPU时间的对象。此对象包含`user`和`system`属性,属性值的单位都是微秒(百万分之一秒)。 -`user`和`system`属性值分别计算了执行用户程序和系统程序的时间,如果此进程在执行任务时是基于多核CPU,值可能比实际花费的时间要大。 +`process.cpuUsage()` 方法返回包含当前进程的用户 CPU 时间和系统 CPU 时间的对象。 +此对象包含 `user` 和 `system` 属性,属性值的单位都是微秒(百万分之一秒)。 +用户和系统的属性值分别计算了执行用户程序和系统程序的时间,如果此进程在执行任务时是基于多核 CPU,值可能比实际花费的时间要大。 -上一次调用`process.cpuUsage()`方法的结果,可以作为参数值传递给此方法,得到的结果是与上一次的差值。 +上一次调用 `process.cpuUsage()` 方法的结果,可以作为参数值传递给此方法,得到的结果是与上一次的差值。 ```js const startUsage = process.cpuUsage(); // { user: 38579, system: 6986 } -// spin the CPU for 500 milliseconds +// 将 CPU 旋转 500 毫秒。 const now = Date.now(); while (Date.now() - now < 500); diff --git a/process/process_debugport.md b/process/process_debugport.md index 9195ae9a..25a96f9c 100644 --- a/process/process_debugport.md +++ b/process/process_debugport.md @@ -3,7 +3,7 @@ added: v0.7.2 --> * {number} -debugger 调试器使用的端口。 +Node.js 调试器使用的端口。 ```js process.debugPort = 5858; diff --git a/process/process_disconnect.md b/process/process_disconnect.md index c56f6f12..e54de3a8 100644 --- a/process/process_disconnect.md +++ b/process/process_disconnect.md @@ -2,8 +2,9 @@ added: v0.7.2 --> -如果 Node.js 进程是从IPC频道派生出来的(具体看 [Child Process][] 和  [Cluster][] 的文档), `process.disconnect()`函数会关闭到父进程的IPC频道,以允许子进程一旦没有其他链接来保持活跃就优雅地关闭。 +如果 Node.js 进程是从 IPC 通道衍生出来的(参阅[子进程][Child Process]和[集群][Cluster]的文档),则 `process.disconnect()` 函数会关闭到父进程的 IPC 通道,以允许子进程一旦没有其他链接来保持活跃就优雅地关闭。 -调用`process.disconnect()`的效果和父进程调用`ChildProcess.disconnect()`的一样[`ChildProcess.disconnect()`][]. +调用 `process.disconnect()` 的效果和父进程调用 [`ChildProcess.disconnect()`] 的一样。 + +如果 Node.js 进程不是从 IPC 通道衍生出来的,则调用 `process.disconnect()` 将会返回 `undefined`。 -如果 Node.js 进程不是从IPC频道派生出来的,那调用`process.disconnect()`函数的结果是`undefined`. diff --git a/process/process_dlopen_module_filename_flags.md b/process/process_dlopen_module_filename_flags.md index cb29e84a..b9f9ab66 100644 --- a/process/process_dlopen_module_filename_flags.md +++ b/process/process_dlopen_module_filename_flags.md @@ -8,29 +8,23 @@ changes: * `module` {Object} * `filename` {string} -* `flags` {os.constants.dlopen} **Default:** `os.constants.dlopen.RTLD_LAZY` +* `flags` {os.constants.dlopen} **默认值:** `os.constants.dlopen.RTLD_LAZY`。 -The `process.dlopen()` method allows to dynamically load shared -objects. It is primarily used by `require()` to load -C++ Addons, and should not be used directly, except in special -cases. In other words, [`require()`][] should be preferred over -`process.dlopen()`, unless there are specific reasons. +`process.dlopen()` 方法允许动态加载共享对象。 +它主要由 `require()` 用于加载 C++ 插件,除特殊情况外,不应直接使用。 +换句话说,除非有特殊原因,否则 [`require()`] 应优先于 `process.dlopen()`。 -The `flags` argument is an integer that allows to specify dlopen -behavior. See the [`os.constants.dlopen`][] documentation for details. +`flags` 参数是一个允许指定 dlopen 行为的整数。 +有关详细信息,请参阅 [`os.constants.dlopen`] 文档。 -If there are specific reasons to use `process.dlopen()` (for instance, -to specify dlopen flags), it's often useful to use [`require.resolve()`][] -to look up the module's path. +如果有特定原因要使用 `process.dlopen()`(例如,指定 dlopen 标志),使用 [`require.resolve()`] 来查找模块的路径通常很有用。 -An important drawback when calling `process.dlopen()` is that the `module` -instance must be passed. Functions exported by the C++ Addon will be accessible -via `module.exports`. +调用 `process.dlopen()` 时的一个重要缺点是必须传入 `module` 实例。 +可以通过 `module.exports` 访问 C++ 插件导出的函数。 -The example below shows how to load a C++ Addon, named as `binding`, -that exports a `foo` function. All the symbols will be loaded before -the call returns, by passing the `RTLD_NOW` constant. In this example -the constant is assumed to be available. +下面的示例显示了如何加载导出 `foo` 函数的名为 `binding` 的 C++ 插件。 +通过传入 `RTLD_NOW` 常量,将在调用返回之前加载所有符号。 +在此示例中,假定常量可用。 ```js const os = require('os'); diff --git a/process/process_emitwarning_warning_options.md b/process/process_emitwarning_warning_options.md index 0478bb67..53d4c842 100644 --- a/process/process_emitwarning_warning_options.md +++ b/process/process_emitwarning_warning_options.md @@ -1,39 +1,39 @@ -* `warning` {string|Error} 发出的警告。 +* `warning` {string|Error} 触发的警告。 * `options` {Object} - * `type` {string} 如果 `warning` 是String, `type` 是警告类型的名字。 默认值: `Warning`。 - * `code` {string} 当前警告的唯一标识符。 - * `ctor` {Function} 如果`warning`是String,`ctor`是可选的function,用于限制生成的堆栈信息。默认`process.emitWarning` - * `detail` {string} error的附加信息。 + * `type` {string} 当 `warning` 是一个 `String` 时,则 `type` 是用于被触发的警告类型的名称。 **默认值:** `'Warning'`。 + * `code` {string} 要触发的警告实例的唯一标识符。 + * `ctor` {Function} 当 `warning` 是一个 `String` 时,则 `ctor` 是一个可选的函数,用于限制生成的堆栈信息。**默认值:** `process.emitWarning`。 + * `detail` {string} 错误的附加信息。 -`process.emitWarning()`方法可用于发出定制的或应用特定的进程警告。 -可以通过给[`process.on('warning')`][process_warning]事件增加处理器,监听这些警告。 +`process.emitWarning()` 方法可用于触发自定义或应用特定的进程警告。 +可以通过给 [`'warning'`][process_warning] 事件增加处理程序来监听这些警告。 ```js -// Emit a warning with a code and additional detail. -process.emitWarning('Something happened!', { +// 使用代码和其他详细信息触发警告。 +process.emitWarning('出错啦', { code: 'MY_WARNING', - detail: 'This is some additional information' + detail: '一些额外的信息' }); -// Emits: -// (node:56338) [MY_WARNING] Warning: Something happened! -// This is some additional information +// 触发: +// (node:56338) [MY_WARNING] Warning: 出错啦 +// 一些额外的信息 ``` -在上面例子中,`process.emitWarning()`内部生成了一个`Error`对象,并传递给[`process.on('warning')`][process_warning]事件。 +在上面例子中,`process.emitWarning()` 内部生成了一个 `Error` 对象,并传给 [`'warning'`][process_warning] 句柄。 ```js process.on('warning', (warning) => { console.warn(warning.name); // 'Warning' - console.warn(warning.message); // 'Something happened!' + console.warn(warning.message); // '出错啦' console.warn(warning.code); // 'MY_WARNING' console.warn(warning.stack); // Stack trace - console.warn(warning.detail); // 'This is some additional information' + console.warn(warning.detail); // '一些额外的信息' }); ``` -如果`warning`参数值是一个`Error`对象,`options`参数项都会被忽略。 +如果 `warning` 是一个 `Error` 对象,则 `options` 参数会被忽略。 diff --git a/process/process_emitwarning_warning_type_code_ctor.md b/process/process_emitwarning_warning_type_code_ctor.md index 3f86c82f..b5493542 100644 --- a/process/process_emitwarning_warning_type_code_ctor.md +++ b/process/process_emitwarning_warning_type_code_ctor.md @@ -2,32 +2,32 @@ added: v6.0.0 --> -* `warning` {string|Error} 发出的警告。 -* `type` {string} 如果 `warning` 是String, `type` 是警告类型的名字。 默认值: `Warning`。 -* `code` {string} 当前警告的唯一标识符。 -* `ctor` {Function} 如果`warning`是String,`ctor`是可选的function,用于限制生成的堆栈信息。默认`process.emitWarning` +* `warning` {string|Error} 触发的警告。 +* `type` {string} 当 `warning` 是一个 `String` 时,则 `type` 是用于被触发的警告类型的名称。 **默认值:** `'Warning'`。 +* `code` {string} 要触发的警告实例的唯一标识符。 +* `ctor` {Function} 当 `warning` 是一个 `String` 时,则 `ctor` 是一个可选的函数,用于限制生成的堆栈信息。**默认值:** `process.emitWarning`。 -`process.emitWarning()`方法可用于发出定制的或应用特定的进程警告。 -可以通过给[`process.on('warning')`][process_warning]事件增加处理器,监听这些警告。 +`process.emitWarning()` 方法可用于触发自定义或应用特定的进程警告。 +可以通过给 [`'warning'`][process_warning] 事件增加处理程序来监听这些警告。 ```js -// Emit a warning using a string. -process.emitWarning('Something happened!'); -// Emits: (node: 56338) Warning: Something happened! +// 使用字符串触发警告。 +process.emitWarning('出错啦'); +// 触发: (node: 56338) Warning: 出错啦 ``` ```js -// Emit a warning using a string and a type. -process.emitWarning('Something Happened!', 'CustomWarning'); -// Emits: (node:56338) CustomWarning: Something Happened! +// 使用字符串和类型触发警告。 +process.emitWarning('出错啦', 'CustomWarning'); +// 触发: (node:56338) CustomWarning: 出错啦 ``` ```js -process.emitWarning('Something happened!', 'CustomWarning', 'WARN001'); -// Emits: (node:56338) [WARN001] CustomWarning: Something happened! +process.emitWarning('出错啦', 'CustomWarning', 'WARN001'); +// 触发: (node:56338) [WARN001] CustomWarning: 出错啦 ``` -在上面例子中,`process.emitWarning()`内部生成了一个`Error`对象,并传递给[`process.on('warning')`][process_warning]事件。 +在前面的每个示例中,`process.emitWarning()` 内部生成了一个 `Error` 对象,并传给 [`'warning'`][process_warning] 句柄。 ```js process.on('warning', (warning) => { @@ -38,28 +38,26 @@ process.on('warning', (warning) => { }); ``` -如果`warning`参数值是一个`Error`对象,它会被透传给`process.on('warning')`的事件监听器(可选参数值`type`,`code` and `ctor`会被忽略): +如果 `warning` 是一个 `Error` 对象,则它将会被透传给 `'warning'` 事件处理程序(并且将会忽略可选的 `type`、`code` 和 `ctor` 参数): ```js -// Emit a warning using an Error object. -const myWarning = new Error('Something happened!'); -// Use the Error name property to specify the type name +// 使用错误对象触发警告。 +const myWarning = new Error('出错啦'); +// 使用错误名称属性指定类型名称。 myWarning.name = 'CustomWarning'; myWarning.code = 'WARN001'; process.emitWarning(myWarning); -// Emits: (node:56338) [WARN001] CustomWarning: Something happened! +// 触发: (node:56338) [WARN001] CustomWarning: 出错啦 ``` -如果`warning`的参数值不是string或`Error`,会抛出 `TypeError`。 +如果 `warning` 不是一个字符串或 `Error`,则会抛出 `TypeError`。 -需要注意的是,使用`Error`对象做为进程警告,**并不是**常用的错误处理机制的替代方式。 +当进程警告使用 `Error` 对象时,进程警告机制并不是常用的错误处理机制的替代方式。 -如果警告`type`是`DeprecationWarning`,会涉及如下额外的处理: +如果警告的 `type` 是 `'DeprecationWarning'`,则会涉及如下额外的处理: -* 如果命令行标识包含`--throw-deprecation`,deprecation warning会作为异常抛出,而不是作为事件被发出。 - -* 如果命令行标识包含`--no-deprecation`,deprecation warning会被忽略。 - -* 如果命令行标识包含`--trace-deprecation`,deprecation warning及其全部堆栈信息会被打印到`stderr`。 +* 如果使用 `--throw-deprecation` 命令行标识,则废弃的警告会作为异常抛出,而不是作为事件被触发。 +* 如果使用`--no-deprecation` 命令行标识,则废弃的警告会被忽略。 +* 如果使用`--trace-deprecation` 命令行标识,则废弃的警告及其全部堆栈信息会被打印到 `stderr`。 diff --git a/process/process_env.md b/process/process_env.md index 049ffd1d..ab74c89b 100644 --- a/process/process_env.md +++ b/process/process_env.md @@ -1,6 +1,11 @@ -* {Object} +* {string[]} -`process.execArgv` 属性返回当Node.js进程被启动时,Node.js特定的命令行选项。 -这些选项在[`process.argv`][]属性返回的数组中不会出现,并且这些选项中不会包括Node.js的可执行脚本名称或者任何在脚本名称后面出现的选项。 +`process.execArgv` 属性返回当 Node.js 进程被启动时,Node.js 特定的命令行选项。 +这些选项在 [`process.argv`][] 属性返回的数组中不会出现,并且这些选项中不会包括 Node.js 的可执行脚本名称或者任何在脚本名称后面出现的选项。 这些选项在创建子进程时是有用的,因为他们包含了与父进程一样的执行环境信息。 -例如: - ```console $ node --harmony script.js --version ``` -`process.execArgv`的结果: +`process.execArgv` 的结果: ```js ['--harmony'] ``` -`process.argv`的结果: +`process.argv` 的结果: ```js diff --git a/process/process_getegid.md b/process/process_getegid.md index 3d56f1ac..41bfaf48 100644 --- a/process/process_getegid.md +++ b/process/process_getegid.md @@ -2,13 +2,13 @@ added: v2.0.0 --> -`process.getegid()`方法返回Node.js进程的有效数字标记的组身份(See getegid(2))。 +`process.getegid()` 方法返回 Node.js 进程的有效数字标记的组身份(参阅 getegid(2))。 ```js if (process.getegid) { - console.log(`Current gid: ${process.getegid()}`); + console.log(`当前的 gid: ${process.getegid()}`); } ``` -*注意*:这个函数只在POSIX平台有效(在Windows或Android平台无效)。 +这个函数只在 POSIX 平台有效(在 Windows 或 Android 平台无效)。 diff --git a/process/process_geteuid.md b/process/process_geteuid.md index ff11d8ef..a4076fe5 100644 --- a/process/process_geteuid.md +++ b/process/process_geteuid.md @@ -2,15 +2,15 @@ added: v2.0.0 --> -* Returns: {Object} +* 返回: {Object} -`process.geteuid()`方法返回Node.js进程的有效数字标记的用户身份(See geteuid(2))。 +`process.geteuid()` 方法返回 Node.js 进程的有效数字标记的用户身份(参阅 geteuid(2))。 ```js if (process.geteuid) { - console.log(`Current uid: ${process.geteuid()}`); + console.log(`当前的 uid: ${process.geteuid()}`); } ``` -*注意*:这个函数只在POSIX平台有效(在Windows或Android平台无效)。 +这个函数只在 POSIX 平台有效(在 Windows 或 Android 平台无效)。 diff --git a/process/process_getgid.md b/process/process_getgid.md index a33b13e8..9d963365 100644 --- a/process/process_getgid.md +++ b/process/process_getgid.md @@ -2,16 +2,16 @@ added: v0.1.31 --> -* Returns: {Object} +* 返回: {Object} -`process.getgid()`方法返回Node.js进程的数字标记的组身份(See getgid(2))。 +`process.getgid()` 方法返回 Node.js 进程的数字标记的组身份(参阅 getgid(2))。 ```js if (process.getgid) { - console.log(`Current gid: ${process.getgid()}`); + console.log(`当前的 gid: ${process.getgid()}`); } ``` -*注意*:这个函数只在POSIX平台有效(在Windows或Android平台无效)。 +这个函数只在 POSIX 平台有效(在 Windows 或 Android 平台无效)。 diff --git a/process/process_getgroups.md b/process/process_getgroups.md index 165222ca..418f9305 100644 --- a/process/process_getgroups.md +++ b/process/process_getgroups.md @@ -2,10 +2,10 @@ added: v0.9.4 --> -* Returns: {Array} +* 返回: {integer[]} -`process.getgroups()`方法返回数组,其中包含了补充的组ID。 -如果包含有效的组ID,POSIX会将其保留为未指定状态,但 Node.js 会确保它始终处于状态。 +`process.getgroups()` 方法返回数组,其中包含了补充的组 ID。 +如果包含有效的组 ID,则 POSIX 会将其保留为未指定状态,但 Node.js 会确保它始终处于状态。 -*注意*:这个函数只在POSIX平台有效(在Windows或Android平台无效)。 +这个函数只在 POSIX 平台有效(在 Windows 或 Android 平台无效)。 diff --git a/process/process_getuid.md b/process/process_getuid.md index f65a3900..25534b6e 100644 --- a/process/process_getuid.md +++ b/process/process_getuid.md @@ -2,15 +2,15 @@ added: v0.1.28 --> -* Returns: {integer} +* 返回: {integer} -`process.getuid()`方法返回Node.js进程的数字标记的用户身份(See getuid(2))。 +`process.getuid()` 方法返回 Node.js 进程的数字标记的用户身份(参阅 getuid(2))。 ```js if (process.getuid) { - console.log(`Current uid: ${process.getuid()}`); + console.log(`当前的 uid: ${process.getuid()}`); } ``` -*注意*:这个函数只在POSIX平台有效(在Windows或Android平台无效)。 +这个函数只在 POSIX 平台有效(在 Windows 或 Android 平台无效)。 diff --git a/process/process_hasuncaughtexceptioncapturecallback.md b/process/process_hasuncaughtexceptioncapturecallback.md index 73f3f639..e19af19d 100644 --- a/process/process_hasuncaughtexceptioncapturecallback.md +++ b/process/process_hasuncaughtexceptioncapturecallback.md @@ -2,8 +2,7 @@ added: v9.3.0 --> -* Returns: {boolean} +* 返回: {boolean} -Indicates whether a callback has been set using -[`process.setUncaughtExceptionCaptureCallback()`][]. +表明是否已使用 [`process.setUncaughtExceptionCaptureCallback()`] 设置回调。 diff --git a/process/process_hrtime_bigint.md b/process/process_hrtime_bigint.md index fcbcc7a5..f1e20ddd 100644 --- a/process/process_hrtime_bigint.md +++ b/process/process_hrtime_bigint.md @@ -2,14 +2,11 @@ added: v10.7.0 --> -* Returns: {bigint} +* 返回: {bigint} -The `bigint` version of the [`process.hrtime()`][] method returning the -current high-resolution real time in a `bigint`. +[`process.hrtime()`] 方法的 `bigint` 版本在 `bigint` 中返回当前的高精度实时。 -Unlike [`process.hrtime()`][], it does not support an additional `time` -argument since the difference can just be computed directly -by subtraction of the two `bigint`s. +与 [`process.hrtime()`] 不同,它不支持额外的 `time` 参数,因为差异可以直接通过减去两个 `bigint` 来计算。 ```js const start = process.hrtime.bigint(); @@ -19,8 +16,8 @@ setTimeout(() => { const end = process.hrtime.bigint(); // 191052633396993n - console.log(`Benchmark took ${end - start} nanoseconds`); - // Benchmark took 1154389282 nanoseconds + console.log(`基准工具 ${end - start} 纳秒`); + // 基准工具 1154389282 纳秒 }, 1000); ``` diff --git a/process/process_hrtime_time.md b/process/process_hrtime_time.md index 67b49fa4..f73cc254 100644 --- a/process/process_hrtime_time.md +++ b/process/process_hrtime_time.md @@ -2,17 +2,18 @@ added: v0.7.6 --> -* `time` {Array} 上一次调用`process.hrtime()`的结果 -* Returns: {Array} +* `time` {integer[]} 上一次调用 `process.hrtime()` 的结果。 +* 返回: {integer[]} -`process.hrtime()`方法`返回当前时间以[seconds, nanoseconds]` tuple Array表示的高精度解析值, -`nanoseconds`是当前时间无法使用秒的精度表示的剩余部分。 +这是在 JavaScript 中引入 `bigint` 之前的 [`process.hrtime.bigint()`] 的遗留版本。 -`time` 是可选参数,传入的值是上一次调用`process.hrtime()`返回的结果,用于与当次调用做差值计算。 -如果此参数传入的不是一个tuple Array,会抛出`TypeError`。 -给此参数传入一个用户定义的数组,而不是传入上次调用`process.hrtime()`的结果,会导致未定义的行为。 +`process.hrtime()` 方法返回当前时间以 `[seconds, nanoseconds]` 元数组表示的高精度解析值,其中 `nanoseconds` 是当前时间无法使用秒的精度表示的剩余部分。 -`process.hrtime()`返回的时间,都是相对于过去某一时刻的值,与一天中的时钟时间没有关系,因此不受制于时钟偏差。 +`time` 是可选参数,传入的值是上一次调用 `process.hrtime()` 返回的结果,用于与当次调用做差值计算。 +如果此参数传入的不是一个元数组,则会抛出 `TypeError`。 +给此参数传入一个用户定义的数组,而不是传入上次调用 `process.hrtime()` 的结果,则会导致未定义的行为。 + +返回的时间都是相对于过去某一时刻的值,与一天中的时钟时间没有关系,因此不受制于时钟偏差。 此方法最主要的作用是衡量间隔操作的性能: ```js @@ -24,8 +25,8 @@ setTimeout(() => { const diff = process.hrtime(time); // [ 1, 552 ] - console.log(`Benchmark took ${diff[0] * NS_PER_SEC + diff[1]} nanoseconds`); - // benchmark took 1000000552 nanoseconds + console.log(`基准工具 ${diff[0] * NS_PER_SEC + diff[1]} 纳秒`); + // 基准工具 1000000552 纳秒 }, 1000); ``` diff --git a/process/process_initgroups_user_extragroup.md b/process/process_initgroups_user_extragroup.md index bfff3245..b5b46752 100644 --- a/process/process_initgroups_user_extragroup.md +++ b/process/process_initgroups_user_extragroup.md @@ -5,18 +5,19 @@ added: v0.9.4 * `user` {string|number} 用户名称或数字标识符。 * `extra_group` {string|number} 组名称或数字标识符。 -`process.initgroups()`方法读取`/etc/group`文件,并且初始化组访问列表,该列表包括了用户所在的所有组。 -该方法需要Node.js进程有`root`访问或者有`CAP_SETGID` capability才能操作。 +`process.initgroups()` 方法读取 `/etc/group` 文件,并且初始化组访问列表,该列表包括了用户所在的所有组。 +该方法需要 Node.js 进程有 `root` 访问或者有` CAP_SETGID` 能力才能操作。 -替换gid并舍弃权限时需要格外谨慎。例如: +删除权限时要小心: ```js console.log(process.getgroups()); // [ 0 ] -process.initgroups('bnoordhuis', 1000); // switch user +process.initgroups('bnoordhuis', 1000); // 切换用户。 console.log(process.getgroups()); // [ 27, 30, 46, 1000, 0 ] -process.setgid(1000); // drop root gid +process.setgid(1000); // 删除 root 的 gid。 console.log(process.getgroups()); // [ 27, 30, 46, 1000 ] ``` -*注意*:这个函数只在POSIX平台有效(在Windows或Android平台无效)。 +这个函数只在 POSIX 平台有效(在 Windows 或 Android 平台无效)。 +此特性在 [`Worker`] 线程中不可用。 diff --git a/process/process_kill_pid_signal.md b/process/process_kill_pid_signal.md index 1a507513..cb8ffda8 100644 --- a/process/process_kill_pid_signal.md +++ b/process/process_kill_pid_signal.md @@ -2,33 +2,32 @@ added: v0.0.6 --> -* `pid` {number} 进程ID -* `signal` {string|number} 将发送的信号,类型为string或number。默认为`'SIGTERM'`。 +* `pid` {number} 进程 ID。 +* `signal` {string|number} 将发送的信号,类型为字符串或数字。**默认值:** `'SIGTERM'`。 -`process.kill()`方法将`signal`发送给`pid`标识的进程。 +`process.kill()` 方法将 `signal` 发送给 `pid` 标识的进程。 -信号名称是如`'SIGINT'` 或 `'SIGHUP'`的字符串。更多信息,查看[Signal Events][] 和 kill(2)。 +信号名称是如 `'SIGINT'` 或 `'SIGHUP'`的字符串。更多信息,参阅[信号事件][Signal Events]和 kill(2)。 -如果目标`pid`不存在,该方法会抛出错误。作为一个特殊例子,信号`0`可以用于测试进程是否存在。 -在Windows平台中,如果`pid`用于kill进程组,会抛出错误。 +如果目标 `pid` 不存在,该方法会抛出错误。 +作为一个特殊例子,信号 `0` 可以用于测试进程是否存在。 +在 Windows 平台中,如果 `pid` 用于杀死进程组,则会抛出错误。 -*注意*:即使这个函数的名称是`process.kill()`,它其实只是发送信号,这点与`kill`系统调用类似。 -发送的信号可能是做一些与kill目标进程无关的事情。 - -例如: +即使这个函数的名称是 `process.kill()`,它其实只是发送信号,这点与 `kill` 系统调用类似。 +发送的信号可能是做一些与杀死目标进程无关的事情。 ```js process.on('SIGHUP', () => { - console.log('Got SIGHUP signal.'); + console.log('收到 SIGHUP 信号'); }); setTimeout(() => { - console.log('Exiting.'); + console.log('退出中'); process.exit(0); }, 100); process.kill(process.pid, 'SIGHUP'); ``` -*注意*: 当Node.js进程接收到了`SIGUSR1`,Node.js会启动debugger,查看[Signal Events][]。 +当 Node.js 进程接收到 `SIGUSR1` 时,Node.js 将会启动调试器,参阅[信号事件][Signal Events]。 diff --git a/process/process_mainmodule.md b/process/process_mainmodule.md index 01a490f8..27c362fd 100644 --- a/process/process_mainmodule.md +++ b/process/process_mainmodule.md @@ -2,10 +2,11 @@ added: v0.1.17 --> -`process.mainModule`属性提供了一种获取[`require.main`][]的替代方式。 -区别在于,若主模块在运行时中发生改变, -[`require.main`][]可能仍然指向变化之前所依赖的模块 -一般来说,假定[`require.main`][]和`process.mainModule`引用相同的模块是安全的。 +* {Object} -就像[`require.main`][]一样,如果没有入口脚本,`process.mainModule`的值是`undefined`。 +`process.mainModule` 属性提供了一种获取 [`require.main`] 的替代方式。 +区别在于,若主模块在运行时中发生改变,[`require.main`] 可能仍然指向变化之前所依赖的模块。 +一般来说,假定两者指向相同的模块是安全的。 + +就像 [`require.main`][] 一样,如果没有入口脚本,`process.mainModule` 的值是 `undefined`。 diff --git a/process/process_memoryusage.md b/process/process_memoryusage.md index fd30ade3..bf74d26a 100644 --- a/process/process_memoryusage.md +++ b/process/process_memoryusage.md @@ -12,15 +12,15 @@ changes: * `heapUsed` {integer} * `external` {integer} -`process.memoryUsage()`方法返回Node.js进程的内存使用情况的对象,该对象每个属性值的单位为字节。 +`process.memoryUsage()` 方法返回 Node.js 进程的内存使用情况的对象,该对象每个属性值的单位为字节。 -例如: +例如: ```js console.log(process.memoryUsage()); ``` -会得到: +会得到: ```js @@ -32,11 +32,12 @@ console.log(process.memoryUsage()); } ``` -`heapTotal` 和 `heapUsed` 代表V8的内存使用情况。 -`external`代表V8管理的,绑定到Javascript的C++对象的内存使用情况。 -`rss`, 驻留集大小, 是给这个进程分配了多少物理内存(占总分配内存的一部分) -这些物理内存中包含堆,栈,和代码段。 +`heapTotal` 和 `heapUsed` 代表 V8 的内存使用情况。 +`external` 代表 V8 管理的,绑定到 Javascript 的 C++ 对象的内存使用情况。 +`rss` 是驻留集大小, 是给这个进程分配了多少物理内存(占总分配内存的一部分),这些物理内存中包含堆、代码段、以及栈。 + +对象、字符串、闭包等存于堆内存。 +变量存于栈内存,实际的 JavaScript 源代码存于代码段内存。 + +使用 [`Worker`] 线程时,`rss` 将会是一个对整个进程有效的值,而其他字段只指向当前线程。 -对象,字符串,闭包等存于堆内存。 -变量存于栈内存。 -实际的JavaScript源代码存于代码段内存。 diff --git a/process/process_nexttick_callback_args.md b/process/process_nexttick_callback_args.md index acef3843..e30db7c8 100644 --- a/process/process_nexttick_callback_args.md +++ b/process/process_nexttick_callback_args.md @@ -10,12 +10,9 @@ changes: * `...args` {any} 当调用 `callback` 时传入的其他参数。 `process.nextTick()` 方法将 `callback` 添加到下一个时间点的队列。 -一旦当轮的事件循环全部完成,则调用下一个时间点的队列中的所有回调。 - -这不是 [`setTimeout(fn, 0)`] 的简单别名。 -它的效率更高。 -它会在事件循环的下一个时间点中触发任何其他 I/O 事件(包括定时器)之前运行。 - +在 JavaScript 堆栈上的当前操作运行完成之后以及允许事件循环继续之前,此队列会被完全耗尽。 +如果要递归地调用 `process.nextTick()`,则可以创建无限的循环。 +有关更多背景信息,请参阅[事件循环][Event Loop]指南。 ```js console.log('开始'); @@ -89,6 +86,3 @@ function definitelyAsync(arg, cb) { } ``` -在处理其他 I/O 之前,下一个时间点的队列在事件循环的每次传递中完全耗尽。 -因此,递归地设置 `nextTick()` 回调将阻塞任何 I/O 的发生,就像一个 `while(true);` 循环。 - diff --git a/process/process_nodeprecation.md b/process/process_nodeprecation.md index 2c8f7d64..4658dffa 100644 --- a/process/process_nodeprecation.md +++ b/process/process_nodeprecation.md @@ -4,9 +4,6 @@ added: v0.8.0 * {boolean} -The `process.noDeprecation` property indicates whether the `--no-deprecation` -flag is set on the current Node.js process. See the documentation for -the [`'warning'` event][process_warning] and the -[`emitWarning()` method][process_emit_warning] for more information about this -flag's behavior. +`process.noDeprecation` 属性表明是否在当前 Node.js 进程上设置了 `--no-deprecation` 标志。 +有关此标志行为的更多信息,请参阅 [`'warning'` 事件][process_warning]和 [`emitWarning()` 方法][process_emit_warning]的文档。 diff --git a/process/process_pid.md b/process/process_pid.md index 3a68f78b..a258ed95 100644 --- a/process/process_pid.md +++ b/process/process_pid.md @@ -4,9 +4,9 @@ added: v0.1.15 * {integer} -`process.pid`属性返回进程的PID。 +`process.pid` 属性返回进程的 PID。 ```js -console.log(`This process is pid ${process.pid}`); +console.log(`此进程的 pid 是 ${process.pid}`); ``` diff --git a/process/process_platform.md b/process/process_platform.md index 4052fa3f..310eb9f5 100644 --- a/process/process_platform.md +++ b/process/process_platform.md @@ -4,9 +4,9 @@ added: v0.1.16 * {string} -`process.platform`属性返回字符串,标识Node.js进程运行其上的操作系统平台。 +`process.platform` 属性返回字符串,标识 Node.js 进程运行其上的操作系统平台。 -例如 +当前可能的值有: * `'aix'` * `'darwin'` @@ -17,10 +17,10 @@ added: v0.1.16 * `'win32'` ```js -console.log(`This platform is ${process.platform}`); +console.log(`此平台是 ${process.platform}`); ``` -The value `'android'` may also be returned if the Node.js is built on the -Android operating system. However, Android support in Node.js -[is experimental][Supported platforms]. +如果 Node.js 是在 Android 操作系统上构建的,也可以返回值 `'android'`。 +但是,Node.js 中的 Android 支持是[实验性的][Android building]。 + diff --git a/process/process_ppid.md b/process/process_ppid.md index 8c456111..5209159c 100644 --- a/process/process_ppid.md +++ b/process/process_ppid.md @@ -1,12 +1,12 @@ * {integer} -`process.ppid` 属性返回当前父进程的进程ID +`process.ppid` 属性返回当前父进程的 PID。 ```js -console.log(`The parent process is pid ${process.ppid}`); +console.log(`父进程的 pid 是 ${process.ppid}`); ``` diff --git a/process/process_release.md b/process/process_release.md index ecc2ac4a..3970cdf6 100644 --- a/process/process_release.md +++ b/process/process_release.md @@ -6,29 +6,23 @@ changes: description: The `lts` property is now supported. --> -`process.release` 属性返回与当前发布相关的元数据对象,包括源代码和源代码头文件 tarball的URLs。 +* {Object} +`process.release` 属性返回与当前发布相关的元数据 `Object`,包括源代码和源代码头文件 tarball 的 URL。 -`process.release`包括如下属性: +`process.release` 包括如下属性: -* `name` {string} 对于Node.js, 此值始终为`'node'`。对于传统io.js 发布包, 此值为`'io.js'`。 - -* `sourceUrl` {string} 指向一个_`.tar.gz`_文件的绝对URL,包括了当前发布的源代码。 - -* `headersUrl`{string} 指向一个_`.tar.gz`_文件的绝对URL,包括了当前发布的源代码的头文件信息。 - 这个文件要比全部源代码文件明显小很多,可以用于编译Node.js原生插件。 - -* `libUrl` {string} 指向一个_`node.lib`_文件的绝对URL,匹配当前发布的结构和版本信息。此文件用于编译Node.js本地插件。 - _这个属性只在Windows版本中存在,在其他平台中无效。 - -* `lts` {string} 标识当前发布的[LTS][]标签的字符串。 -  只有长效版(Long Term Support/LTS)存在这个属性,其他所有版本类型这个属性都是`undefined`, -  包括_Current_版本,当前的有效值有: - - `'Argon'` for the 4.x LTS line beginning with 4.2.0. - - `'Boron'` for the 6.x LTS line beginning with 6.9.0. - - `'Carbon'` for the 8.x LTS line beginning with 8.9.1. - -例如: +* `name` {string} 对于 Node.js,此值始终为 `'node'`。对于遗留的 io.js 发布包,此值为 `'io.js'`。 +* `sourceUrl` {string} 指向一个_`.tar.gz`_文件的绝对 URL,包括了当前发布的源代码。 +* `headersUrl`{string} 指向一个_`.tar.gz`_文件的绝对 URL,包括了当前发布的源代码的头文件信息。 + 这个文件要比全部源代码文件明显小很多,可以用于编译 Node.js 原生插件。 +* `libUrl` {string} 指向一个_`node.lib`_文件的绝对 URL,匹配当前发布的结构和版本信息。此文件用于编译 Node.js 本地插件。这个属性只在 Windows 版本中存在,在其他平台中无效。 +* `lts` {string} 标识当前发布的 [LTS][] 标签的字符串。 +  只有 LTS 版本存在这个属性,其他所有版本类型(包括当前版本)这个属性都是 `undefined`。 +  当前的有效值有: + - `'Argon'` 用于 4.2.0 开始的 4.x LTS 版本。 + - `'Boron'` 用于 6.9.0 开始的 6.x LTS 版本。 + - `'Carbon'` 用于 8.9.1 开始的 8.x LTS 版本。 ```js @@ -41,5 +35,5 @@ changes: } ``` -从源码树的非发布版本中构建的定制版本,可能只有`name`属性有效。其他的属性不一定会存在。 +从源码树的非发布版本中构建的定制版本,可能只有 `name` 属性有效。其他的属性不一定会存在。 diff --git a/process/process_send_message_sendhandle_options_callback.md b/process/process_send_message_sendhandle_options_callback.md index 31ed791a..5d47e36a 100644 --- a/process/process_send_message_sendhandle_options_callback.md +++ b/process/process_send_message_sendhandle_options_callback.md @@ -6,11 +6,12 @@ added: v0.5.9 * `sendHandle` {net.Server|net.Socket} * `options` {Object} * `callback` {Function} -* Returns: {boolean} +* 返回: {boolean} -如果Node.js进程是通过进程间通信产生的,那么,process.send()方法可以用来给父进程发送消息。 -接收到的消息被视为父进程的[`ChildProcess`][]对象上的一个[`'message'`][]事件。 +如果 Node.js 进程是通过 IPC 通道衍生的,则 `process.send()` 方法可以用来给父进程发送消息。 +接收到的消息被视为父进程的 [`ChildProcess`][] 对象上的一个 [`'message'`][] 事件。 -如果Node.js进程不是通过进程间通信产生的, `process.send()` 会是`undefined`。 +如果 Node.js 进程不是通过 IPC 通道衍生的,则 `process.send()` 将会是 `undefined`。 + +消息传递时,以格式序列化和解析,结果消息与发送时未必完全一样。 -*注意*: 消息传递时,以格式序列化和解析,结果消息与发送时未必完全一样。 diff --git a/process/process_setegid_id.md b/process/process_setegid_id.md index 739106ac..87c745a6 100644 --- a/process/process_setegid_id.md +++ b/process/process_setegid_id.md @@ -2,23 +2,24 @@ added: v2.0.0 --> -* `id` {string|number} 一个用户组名或用户组ID +* `id` {string|number} 组名或 ID。 -`process.setegid()`方法为进程设置有效的用户组ID。(请看 setegid(2).) -`id`可以传一个数值ID或传一个用户组名称字符串。如果传了后者的话,会解析成一个相关的数值ID, -解析的时候,这个方法方法是阻塞的。 +`process.setegid()` 方法为进程设置有效的组标识。(参阅 setegid(2))。 +`id` 可以传入数字 ID 或组名字符串。 +如果指定了组名,则此方法在解析关联的数字 ID 时会阻塞。 ```js if (process.getegid && process.setegid) { - console.log(`Current gid: ${process.getegid()}`); + console.log(`当前的 gid: ${process.getegid()}`); try { process.setegid(501); - console.log(`New gid: ${process.getegid()}`); + console.log(`新的 gid: ${process.getegid()}`); } catch (err) { - console.log(`Failed to set gid: ${err}`); + console.log(`无法设置 gid: ${err}`); } } ``` -*注意*: 这个方法只在POSIX平台可用(换句话说,Windows或Android不行)。 +这个函数只在 POSIX 平台有效(在 Windows 或 Android 平台无效)。 +此特性在 [`Worker`] 线程中不可用。 diff --git a/process/process_seteuid_id.md b/process/process_seteuid_id.md index 398895df..e3f9b046 100644 --- a/process/process_seteuid_id.md +++ b/process/process_seteuid_id.md @@ -2,23 +2,24 @@ added: v2.0.0 --> -* `id` {string|number} A user name or ID +* `id` {string|number} 用户名或 ID。 -`process.seteuid()`方法为进程设置有效的用户ID。(请看 seteuid(2).) -`id`可以传一个数值ID或传一个用户名字符串。如果传了特定的用户名字符串,会解析成一个相关的数值ID, -解析的时候,这个方法方法是阻塞的。 +`process.seteuid()` 方法为进程设置有效的用户标识。(参阅 seteuid(2))。 +`id` 可以传入数字 ID 或用户名字符串。 +如果指定了用户名,则此方法在解析关联的数字 ID 时会阻塞。 ```js if (process.geteuid && process.seteuid) { - console.log(`Current uid: ${process.geteuid()}`); + console.log(`当前的 uid: ${process.geteuid()}`); try { process.seteuid(501); - console.log(`New uid: ${process.geteuid()}`); + console.log(`新的 uid: ${process.geteuid()}`); } catch (err) { - console.log(`Failed to set uid: ${err}`); + console.log(`无法设置 uid: ${err}`); } } ``` -*注意*: 这个方法只在POSIX平台可用(换句话说,Windows或Android不行)。 +这个函数只在 POSIX 平台有效(在 Windows 或 Android 平台无效)。 +此特性在 [`Worker`] 线程中不可用。 diff --git a/process/process_setgid_id.md b/process/process_setgid_id.md index 890cee5a..56bef082 100644 --- a/process/process_setgid_id.md +++ b/process/process_setgid_id.md @@ -2,24 +2,24 @@ added: v0.1.31 --> -* `id` {string|number} 进程组名字或ID +* `id` {string|number} 组名或 ID。 -`process.setgid()` 为进程方法设置组ID. (查看setgid(2).) -可给`id`参数传一个数值ID或字符串名。 - -如果已经有一个进程组ID名,那么在解析为相关的ID之前,此方法是阻塞。 +`process.setgid()` 方法为进程设置组标识。(参阅 setgid(2))。 +`id` 可以传入数字 ID 或组名字符串。 +如果指定了组名,则此方法在解析关联的数字 ID 时会阻塞。 ```js if (process.getgid && process.setgid) { - console.log(`Current gid: ${process.getgid()}`); + console.log(`当前的 gid: ${process.getgid()}`); try { process.setgid(501); - console.log(`New gid: ${process.getgid()}`); + console.log(`新的 gid: ${process.getgid()}`); } catch (err) { - console.log(`Failed to set gid: ${err}`); + console.log(`无法设置 gid: ${err}`); } } ``` -注意: 这个方法只在POSIX平台可用(换句话说,Windows或Android不行)。 +这个函数只在 POSIX 平台有效(在 Windows 或 Android 平台无效)。 +此特性在 [`Worker`] 线程中不可用。 diff --git a/process/process_setuid_id.md b/process/process_setuid_id.md index 9e8a00c2..01d6280b 100644 --- a/process/process_setuid_id.md +++ b/process/process_setuid_id.md @@ -1,23 +1,24 @@ +* `id` {integer | string} -`process.setuid(id)` 设置进程的用户ID (参阅 -setuid(2).) `id` 可以是一个数值ID也可以是一个用户名字符串. -如果已经有一个用户名,在解析为相关的数值ID时,此方法阻塞。 +`process.setuid(id)` 方法为进程设置用户标识。(参阅 setuid(2))。 +`id` 可以传入数字 ID 或用户名字符串。 +如果指定了用户名,则此方法在解析关联的数字 ID 时会阻塞。 ```js if (process.getuid && process.setuid) { - console.log(`Current uid: ${process.getuid()}`); + console.log(`当前的 uid: ${process.getuid()}`); try { process.setuid(501); - console.log(`New uid: ${process.getuid()}`); + console.log(`新的 uid: ${process.getuid()}`); } catch (err) { - console.log(`Failed to set uid: ${err}`); + console.log(`无法设置 uid: ${err}`); } } ``` -注意: 这个方法只在POSIX平台可用(换句话说,Windows或Android不行)。 - +这个函数只在 POSIX 平台有效(在 Windows 或 Android 平台无效)。 +此特性在 [`Worker`] 线程中不可用。 diff --git a/process/process_stdin.md b/process/process_stdin.md index 69c2db6b..c77014bb 100644 --- a/process/process_stdin.md +++ b/process/process_stdin.md @@ -8,8 +8,9 @@ process.stdin.setEncoding('utf8'); process.stdin.on('readable', () => { - const chunk = process.stdin.read(); - if (chunk !== null) { + let chunk; + // 使用循环确保我们读取所有的可用数据。 + while ((chunk = process.stdin.read()) !== null) { process.stdout.write(`数据: ${chunk}`); } }); diff --git a/process/process_throwdeprecation.md b/process/process_throwdeprecation.md index 4e5cb4e6..0b14c925 100644 --- a/process/process_throwdeprecation.md +++ b/process/process_throwdeprecation.md @@ -4,6 +4,5 @@ added: v0.9.12 * {boolean} -`process.throwDeprecation` 属性表示`--throw-deprecation`标记是否被设置到当前Node.js进程上。 -请查看 [`warning` event][process_warning] 和[`emitWarning` method][process_emit_warning] 的文档, -来获取这个标记行为的更多信息。 +`process.throwDeprecation` 属性表示 `--throw-deprecation` 标记是否被设置到当前 Node.js 进程上。 +请查看 [`'warning'` 事件][process_warning]和 [`emitWarning()` 方法][process_emit_warning]的文档来获取这个标记行为的更多信息。 diff --git a/process/process_title.md b/process/process_title.md index eef25f23..d1e6a22d 100644 --- a/process/process_title.md +++ b/process/process_title.md @@ -4,6 +4,10 @@ added: v0.1.104 * {string} -`process.title` 属性用于获取或设置当前进程在 `ps` 命令中显示的进程名字 +`process.title` 属性返回当前进程标题(即返回 `ps` 的当前值)。 +为 `process.title` 分配新值会修改 `ps` 的当前值。 -*注意*:当分配新值时,不同的平台会对标题施加不同的最大长度限制。 通常这种限制是相当有限的。 例如,在 Linux 和 macOS 上,`process.title` 仅限于二进制名称的大小加上命令行参数的长度,因为设置 `process.title` 会覆盖进程的argv内存。Node.js 的 v0.8, 通过覆盖 `environ` 允许内存较长的过程标题字符串,但是这在一些(相当模糊的)可能是不安全的并且令人困惑情况下。 +当分配新值时,不同的平台会对标题施加不同的最大长度限制。 +通常这种限制是相当有限的。 +例如,在 Linux 和 macOS 上,`process.title` 仅限于二进制名称的大小加上命令行参数的长度,因为设置 `process.title` 会覆盖进程的 `argv` 内存。 +Node.js 的 v0.8, 通过覆盖 `environ` 允许内存较长的过程标题字符串,但是这在一些(相当模糊的)可能是不安全的并且令人困惑情况下。 diff --git a/process/process_umask_mask.md b/process/process_umask_mask.md index 0bc382db..c6b5ce4a 100644 --- a/process/process_umask_mask.md +++ b/process/process_umask_mask.md @@ -10,8 +10,10 @@ added: v0.1.19 const newmask = 0o022; const oldmask = process.umask(newmask); console.log( - `Changed umask from ${oldmask.toString(8)} to ${newmask.toString(8)}` + `将 umask 从 ${oldmask.toString(8)} 更改为 ${newmask.toString(8)}` ); ``` +[`Worker`] 线程能够读取 umask,但是尝试设置 umask 将会导致抛出异常。 + diff --git a/process/process_uptime.md b/process/process_uptime.md index 56e2ec0e..7c020782 100644 --- a/process/process_uptime.md +++ b/process/process_uptime.md @@ -2,9 +2,9 @@ added: v0.5.0 --> -* Returns: {number} +* 返回: {number} `process.uptime()` 方法返回当前 Node.js 进程运行时间秒长 -*注意*: 该返回值包含秒的分数。 使用 `Math.floor()` 来得到整秒钟。 +该返回值包含秒的分数。 使用 `Math.floor()` 来得到整秒钟。 diff --git a/process/process_version.md b/process/process_version.md index 3e7449f7..dab02e68 100644 --- a/process/process_version.md +++ b/process/process_version.md @@ -4,9 +4,9 @@ added: v0.1.3 * {string} -`process.version` 属性返回Node.js的版本信息。 +`process.version` 属性返回 Node.js 的版本信息。 ```js -console.log(`Version: ${process.version}`); +console.log(`版本: ${process.version}`); ``` diff --git a/process/process_versions.md b/process/process_versions.md index 7bccfb76..9b703a4d 100644 --- a/process/process_versions.md +++ b/process/process_versions.md @@ -4,6 +4,9 @@ changes: - version: v4.2.0 pr-url: https://github.com/nodejs/node/pull/3102 description: The `icu` property is now supported. + - version: v9.0.0 + pr-url: https://github.com/nodejs/node/pull/15785 + description: The `v8` property now includes a Node.js specific suffix. --> * {Object} @@ -18,20 +21,22 @@ console.log(process.versions); 会显示类似下面的对象信息: - -```js -{ http_parser: '2.7.0', - node: '8.9.0', - v8: '6.3.292.48-node.6', - uv: '1.18.0', +```console +{ node: '11.13.0', + v8: '7.0.276.38-node.18', + uv: '1.27.0', zlib: '1.2.11', - ares: '1.13.0', - modules: '60', - nghttp2: '1.29.0', - napi: '2', - openssl: '1.0.2n', - icu: '60.1', - unicode: '10.0', - cldr: '32.0', - tz: '2016b' } + brotli: '1.0.7', + ares: '1.15.0', + modules: '67', + nghttp2: '1.34.0', + napi: '4', + llhttp: '1.1.1', + http_parser: '2.8.0', + openssl: '1.1.1b', + cldr: '34.0', + icu: '63.1', + tz: '2018e', + unicode: '11.0' } ``` + diff --git a/process/signal_events.md b/process/signal_events.md index 0bfdce44..c5a283a0 100644 --- a/process/signal_events.md +++ b/process/signal_events.md @@ -2,53 +2,48 @@ -当Node.js进程接收到一个信号时,会触发信号事件。 signal(7)列出了标准POSIX的信号名称列表,例如`SIGINT`, `SIGHUP`等等。 +当 Node.js 进程接收到一个信号时,会触发信号事件。 signal(7) 列出了标准POSIX的信号名称列表,例如 `'SIGINT'`、`'SIGHUP'` 等等。 -每个事件名称,以信号名称的大写表示 (比如事件`'SIGINT'` 对应信号 `SIGINT`). +信号处理程序将会接收信号的名称(`'SIGINT'`,`'SIGTERM'` 等)作为第一个参数。 + +每个事件名称,以信号名称的大写表示 (比如事件 `'SIGINT'` 对应信号 `SIGINT`)。 ```js -// Begin reading from stdin so the process does not exit. +// 从 stdin 开始读取,因此进程不会退出。 process.stdin.resume(); process.on('SIGINT', () => { - console.log('Received SIGINT. Press Control-D to exit.'); + console.log('接收到 SIGINT。 按 Control-D 退出。'); }); -// Using a single function to handle multiple signals +// 使用单独的函数处理多个信号。 function handle(signal) { - console.log(`Received ${signal}`); + console.log(`接收到 ${signal}`); } process.on('SIGINT', handle); process.on('SIGTERM', handle); ``` -* `SIGUSR1` 被Node.js保留用于启动调试器。可以为此事件绑定一个监听器,但是即使这样做也不会阻止调试器的启动。 - -* `SIGTERM` 和 `SIGINT` 在非windows平台绑定了默认的监听器,这样进程以代码`128 + signal number`结束之前,可以重置终端模式。 -  如果这两个事件任意一个绑定了新的监听器,原有默认的行为会被移除(Node.js不会结束)。 - -* `SIGPIPE` 默认会被忽略。可以给其绑定监听器。 - -* `SIGHUP` 在Windows平台中当console窗口被关闭时会触发它,在非windows平台中多种相似的条件下也会触发,查看signal(7)。 - 可以给其绑定监听器,但是Windows下Node.js会在它触发后10秒钟无条件关闭。 - 非windows平台,`SIGHUP`默认的绑定行为是结束Node.js,但是一旦给它绑定了新的监听器,默认行为会被移除。 - -* `SIGTERM` 在Windows中不支持,可以给其绑定监听器。 -* `SIGINT` 在终端运行时,可以被所有平台支持,通常可以通过 `+C` 触发(虽然这个不能配置)。 - 当终端运行在raw模式,它不会被触发。 - -* `SIGBREAK` 在Windows中按下`+`会被触发,非Windows平台中可以为其绑定监听器,但是没有方式触发或发送此事件。 - -* `SIGWINCH` 当console被resize时会触发。Windows中只有当光标移动并写入到console,或者以raw模式使用一个可读tty时,才会触发。 - -* `SIGKILL` 不能绑定监听器,所有平台中出现此事件,都会使得Node.js无条件终止。 - -* `SIGSTOP` 不能绑定监听器。 - -* `SIGBUS`, `SIGFPE`, `SIGSEGV` and `SIGILL`, 如果不是通过kill(2)产生,默认会使进程停留在某个状态,在此状态下尝试调用JS监听器是不安全的。 - 如果尝试调用JS监听器可能会导致进程在无限循环中挂死,因为使用`process.on()`附加的监听器是以异步的方式被调用,因此不能纠正隐含的问题。 +* `'SIGUSR1'` 被 Node.js 保留用于启动[调试器][debugger]。可以为此事件绑定一个监听器,但是即使这样做也不会阻止调试器的启动。 +* `'SIGTERM'` 和 `'SIGINT'` 在非 Windows 平台绑定了默认的监听器,这样进程以代码 `128 + signal number` 结束之前,可以重置终端模式。 +  如果这两个事件任意一个绑定了新的监听器,原有默认的行为会被移除(Node.js 不会结束)。 +* `'SIGPIPE'` 默认会被忽略。可以给其绑定监听器。 +* `'SIGHUP'` 在 Windows 平台中当控制台窗口被关闭时会触发它,在其他平台中多种相似的条件下也会触发,查看 signal(7)。 + 可以给其绑定监听器,但是 Windows 下 Node.js 会在它触发后 10 秒钟无条件关闭。 + 在非 Windows 平台,`SIGHUP` 默认的绑定行为是结束 Node.js,但是一旦给它绑定了新的监听器,默认行为会被移除。 +* `'SIGTERM'` 在 Windows 中不支持,可以给其绑定监听器。 +* `'SIGINT'` 在终端运行时,可以被所有平台支持,通常可以通过 `+C` 触发(虽然这个不能配置)。 + 当终端运行在原始模式,它不会被触发。 +* `'SIGBREAK'` 在 Windows 中按下 `+` 会被触发,非 Windows 平台中可以为其绑定监听器,但是没有方式触发或发送此事件。 +* `'SIGWINCH'` 当控制台被调整大小时会触发。Windows 中只有当光标移动并写入到控制台、或者以原始模式使用一个可读 tty 时,才会触发。 +* `'SIGKILL'` 不能绑定监听器,所有平台中出现此事件,都会使得 Node.js 无条件终止。 +* `'SIGSTOP'` 不能绑定监听器。 +* `'SIGBUS'`、`'SIGFPE'`、`'SIGSEGV'` 和 `'SIGILL'`, 如果不是通过 kill(2) 产生,默认会使进程停留在某个状态,在此状态下尝试调用 JS 监听器是不安全的。 + 如果尝试调用 JS 监听器可能会导致进程在无限循环中挂死,因为使用 `process.on()` 附加的监听器是以异步的方式被调用,因此不能纠正隐含的问题。 + +Windows 不支持发送信号,但是 Node.js 通过 [`process.kill()`][] 和 [`subprocess.kill()`][] 提供了某些模拟机制。 +发送信号 `0` 可以测试进程是否存在。 +发送 `SIGINT`、`SIGTERM` 和 `SIGKILL` 使得目标进程无条件终止。 -*Note*: Windows不支持发送信号,但是Node.js通过[`process.kill()`][], 和 [`subprocess.kill()`][]提供了某些模拟机制。 -发送信号`0` 可以测试进程是否存在。发送`SIGINT`, `SIGTERM`, and `SIGKILL` 使得目标进程无条件终止。 diff --git a/process/warning_using_uncaughtexception_correctly.md b/process/warning_using_uncaughtexception_correctly.md index 170fa695..badb5fb9 100644 --- a/process/warning_using_uncaughtexception_correctly.md +++ b/process/warning_using_uncaughtexception_correctly.md @@ -1,5 +1,5 @@ -需要注意,如果打算使用 `'uncaughtException'` 事件作为异常处理的最后补救机制,这是非常粗糙的设计方式。 +如果打算使用 `'uncaughtException'` 事件作为异常处理的最后补救机制,这是非常粗糙的设计方式。 此事件不应该当作 `On Error Resume Next`(出了错误就恢复让它继续)的等价机制。 未处理异常本身就意味着应用已经处于了未定义的状态。如果基于这种状态,尝试恢复应用正常进行,可能会造成未知或不可预测的问题。