child_process.fork(modulePath[, args][, options])
| 版本 | 变化 |
|---|---|
| v17.4.0、v16.14.0 |
|
| v16.4.0、v14.18.0 |
|
| v15.13.0、v14.18.0 | 添加了超时。 |
| v15.11.0、v14.18.0 | 添加了AbortSignal 的 killSignal。 |
| v15.6.0、v14.17.0 | 添加了AbortSignal 支持。 |
| v13.2.0、v12.16.0 | 现在支持 |
| v8.0.0 |
|
| v6.4.0 | 现在支持 |
| v0.5.0 | 添加于:v0.5.0 |
参数
modulePath<string> | <URL> 在子模块中运行的模块。args<string[]> 字符串参数列表。options<Object>cwd<string> | <URL> 子进程的当前工作目录。detached<boolean> 准备子进程独立于其父进程运行。具体行为取决于平台,请参阅)。options.detachedenv<Object> 环境键值对。 默认:process.env。execPath<string> 用于创建子进程的可执行文件。execArgv<string[]> 传递给可执行文件的字符串参数列表。 默认:process.execArgv。gid<number> 设置进程的组标识(参见)。setgid(2)serialization<string> 指定用于在进程之间发送消息的序列化类型。可能的值为'json'和'advanced'。有关详细信息,请参阅Advanced serialization。 默认:'json'。signal<AbortSignal> 允许使用 AbortSignal 关闭子进程。killSignal<string> | <integer> 生成的进程将被超时或中止信号杀死时使用的信号值。 默认:'SIGTERM'。silent<boolean> 如果true,子节点的 stdin、stdout 和 stderr 将通过管道传输到父节点,否则它们将从父节点继承,请参见的child_process.spawn()'pipe'和'inherit'选项的了解更多详情。 默认:stdiofalse。stdio<Array> | <string> 见的child_process.spawn()。提供此选项时,它会覆盖stdiosilent。如果使用数组变体,它必须只包含一个值为'ipc'的项目,否则将引发错误。例如[0, 1, 2, 'ipc']。uid<number> 设置进程的用户身份(参见)。setuid(2)windowsVerbatimArguments<boolean> 在 Windows 上不对参数进行引用或转义。在 Unix 上被忽略。 默认:false。timeout<number> 允许进程运行的最长时间(以毫秒为单位)。 默认:undefined。
- 返回: <ChildProcess>
child_process.fork() 方法是 的一个特例,专门用于生成新的 Node.js 进程。像 child_process.spawn() 一样,返回一个 child_process.spawn() 对象。返回的ChildProcess 将有一个额外的内置通信通道,允许消息在父子节点之间来回传递。有关详细信息,请参阅ChildProcess 。subprocess.send()
请记住,生成的 Node.js 子进程独立于父进程,但两者之间建立的 IPC 通信通道除外。每个进程都有自己的内存,有自己的 V8 实例。由于需要额外的资源分配,因此不建议生成大量子 Node.js 进程。
默认情况下,child_process.fork() 将使用父进程的 生成新的 Node.js 实例。 process.execPath options 对象中的execPath 属性允许使用替代执行路径。
使用自定义 execPath 启动的 Node.js 进程将使用子进程上的环境变量 NODE_CHANNEL_FD 标识的文件说明符 (fd) 与父进程通信。
与 POSIX 系统调用不同,fork(2) child_process.fork() 不会克隆当前进程。
child_process.fork() 不支持 中可用的child_process.spawn() shell 选项,如果设置将被忽略。
如果启用了 signal 选项,则在相应的 AbortController 上调用 .abort() 与在子进程上调用 .kill() 类似,只是传递给回调的错误将是 AbortError :
if (process.argv[2] === 'child') {
setTimeout(() => {
console.log(`Hello from ${process.argv[2]}!`);
}, 1_000);
} else {
const { fork } = require('node:child_process');
const controller = new AbortController();
const { signal } = controller;
const child = fork(__filename, ['child'], { signal });
child.on('error', (err) => {
// This will be called with err being an AbortError if the controller aborts
});
controller.abort(); // Stops the child process
}
相关用法
- Node.js child_process.spawn(command[, args][, options])用法及代码示例
- Node.js child_process.exec(command[, options][, callback])用法及代码示例
- Node.js child_process.execFile(file[, args][, options][, callback])用法及代码示例
- Node.js certificate.verifySpkac(spkac[, encoding])用法及代码示例
- Node.js console.timeEnd()用法及代码示例
- Node.js crypto.randomFill()用法及代码示例
- Node.js crypto.createHmac()用法及代码示例
- Node.js crypto.randomFillSync(buffer[, offset][, size])用法及代码示例
- Node.js console.countReset()用法及代码示例
- Node.js cluster.worker用法及代码示例
- Node.js crypto.constants用法及代码示例
- Node.js crypto.randomInt([min, ]max[, callback])用法及代码示例
- Node.js crypto.publicEncrypt()用法及代码示例
- Node.js console.trace()用法及代码示例
- Node.js console.timeLog()用法及代码示例
- Node.js console.timeStamp()用法及代码示例
- Node.js crypto.publicDecrypt()用法及代码示例
- Node.js console.dir()用法及代码示例
- Node.js crypto.pbkdf2Sync(password, salt, iterations, keylen, digest)用法及代码示例
- Node.js console.log()用法及代码示例
- Node.js crypto.createHash()用法及代码示例
- Node.js crypto.hkdfSync()用法及代码示例
- Node.js crypto.randomFillSync()用法及代码示例
- Node.js crypto.checkPrime()用法及代码示例
- Node.js clienthttp2session.request()用法及代码示例
注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 child_process.fork(modulePath[, args][, options])。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
