utilityProcess
utilityProcess
创建一个启用了 Node.js 和消息端口的子进程。它提供了 Node.js 中 child_process.fork
API 的等效功能,但使用 Chromium 的 服务 API 启动子进程。
进程:主进程
方法
utilityProcess.fork(modulePath[, args][, options])
modulePath
字符串 - 应作为子进程入口点运行的脚本的路径。args
字符串[](可选) - 字符串参数列表,这些参数将在子进程中作为process.argv
使用。
类:UtilityProcess
UtilityProcess
的实例表示具有 Node.js 集成的 Chromium 生成的子进程。
UtilityProcess
是一个 EventEmitter。
实例方法
child.postMessage(message, [transfer])
message
任何transfer
MessagePortMain[](可选)
向子进程发送消息,可以选择性地转移零个或多个 MessagePortMain
对象的所有权。
例如
// Main process
const { port1, port2 } = new MessageChannelMain()
const child = utilityProcess.fork(path.join(__dirname, 'test.js'))
child.postMessage({ message: 'hello' }, [port1])
// Child process
process.parentPort.once('message', (e) => {
const [port] = e.ports
// ...
})
child.kill()
返回 布尔值
优雅地终止进程。在 POSIX 上,它使用 SIGTERM,但在退出时会确保进程被回收。如果 kill 成功,则此函数返回 true,否则返回 false。
实例属性
child.pid
表示子进程的进程标识符 (PID) 的 整数 | 未定义
。如果子进程由于错误而无法生成,则该值为 未定义
。当子进程退出时,在发出 exit
事件后,该值为 未定义
。
child.stdout
表示子进程的 stdout 的 NodeJS.ReadableStream | null
。如果子进程以 options.stdio[1] 设置为 'pipe' 以外的任何内容生成,则这将为 null
。当子进程退出时,在发出 exit
事件后,该值为 null
。
// Main process
const { port1, port2 } = new MessageChannelMain()
const child = utilityProcess.fork(path.join(__dirname, 'test.js'))
child.stdout.on('data', (data) => {
console.log(`Received chunk ${data}`)
})
child.stderr
表示子进程的 stderr 的 NodeJS.ReadableStream | null
。如果子进程以 options.stdio[2] 设置为 'pipe' 以外的任何内容生成,则这将为 null
。当子进程退出时,在发出 exit
事件后,该值为 null
。
实例事件
事件:'spawn'
子进程成功生成后发出一次。
事件:'exit'
返回
code
数字 - 包含从 posix 上的 waitpid 或 windows 上的 GetExitCodeProcess 获取的进程退出代码。
子进程结束后发出。
事件:'message'
返回
message
任何
当子进程使用 process.parentPort.postMessage()
发送消息时发出。