modulePath{string} 要在子进程中运行的模块。args{string[]} 字符串参数的列表。options{Object}cwd{string} 子进程的当前工作目录。detached{boolean} 使子进程独立于其父进程运行。 具体行为取决于平台,参见 [options.detached]。env{Object} 环境变量的键值对。 默认值:process.env。execPath{string} 用于创建子进程的可执行文件。execArgv{string[]} 传给可执行文件的字符串参数的列表。 默认值:process.execArgv。serialization{string} 指定用于在进程之间发送消息的序列化类型。 可能的值为'json'和'advanced'。 详见[高级序列化][Advanced serialization]。 默认值:'json'。silent{boolean} 如果为true,则子进程的 stdin、stdout 和 stderr 会被 pipe 到父进程,否则它们会继承自父进程,详见 [child_process.spawn()] 的 [stdio] 中的'pipe'和'inherit'选项。 默认值:false。stdio{Array|string} 参见 [child_process.spawn()] 的 [stdio]。 当提供此选项时,则它会覆盖silent选项。 如果使用数组变量,则它必须包含值为'ipc'的元素,否则会抛出错误。 例如[0, 1, 2, 'ipc']。windowsVerbatimArguments{boolean} 在 Windows 上不为参数加上引号或转义。 在 Unix 上会忽略。 默认值:false。uid{number} 设置进程的用户标识,参见 setuid(2)。gid{number} 设置进程的群组标识,参见 setgid(2)。
- 返回: {ChildProcess}
child_process.fork() 方法是 [child_process.spawn()] 的特例,专门用于衍生新的 Node.js 进程。
与 [child_process.spawn()] 一样返回 [ChildProcess] 对象。
返回的 [ChildProcess] 会内置额外的通信通道,允许消息在父进程和子进程之间来回传递。
详见 [subprocess.send()]。
记住,衍生的 Node.js 子进程独立于父进程,但两者之间建立的 IPC 通信通道除外。 每个进程都有自己的内存,带有自己的 V8 实例。 由于需要额外的资源分配,因此不建议衍生大量的 Node.js 子进程。
默认情况下,child_process.fork() 会使用父进程的 [process.execPath] 来衍生新的 Node.js 实例。
options 对象中的 execPath 属性可以使用其他的执行路径。
使用自定义的 execPath 启动的 Node.js 进程会使用文件描述符(在子进程上使用环境变量 NODE_CHANNEL_FD 标识)与父进程通信。
与 fork(2) 的 POSIX 系统调用不同,child_process.fork() 不会克隆当前的进程。
[child_process.spawn()] 中可用的 shell 选项在 child_process.fork() 中不支持,如果设置则会被忽略。
