使用 Bun.spawn()
生成子进程。生成第二个 bun
进程时,可以在两个进程之间打开一个直接进程间通信 (IPC) 通道。
注意 — 此 API 仅与其他 bun
进程兼容。使用 process.execPath
获取当前正在运行的 bun
可执行文件的路径。
const child = Bun.spawn(["bun", "child.ts"], {
ipc(message) {
/**
* The message received from the sub process
**/
},
});
父进程可以使用已返回的 Subprocess
实例上的 .send()
方法向子进程发送消息。在 ipc
处理程序中,发送子进程的引用也可用作第二个参数。
const childProc = Bun.spawn(["bun", "child.ts"], {
ipc(message, childProc) {
/**
* The message received from the sub process
**/
childProc.send("Respond to child")
},
});
childProc.send("I am your father"); // The parent can send messages to the child as well
同时,子进程可以使用 process.send()
向其父进程发送消息,并使用 process.on("message")
接收消息。这是 Node.js 中 child_process.fork()
使用的相同 API。
process.send("Hello from child as string");
process.send({ message: "Hello from child as object" });
process.on("message", (message) => {
// print message from parent
console.log(message);
});
所有消息都使用 JSC serialize
API 序列化,该 API 允许使用 postMessage
和 structuredClone
支持的相同 可传输类型 集合,包括字符串、类型化数组、流和对象。
// send a string
process.send("Hello from child as string");
// send an object
process.send({ message: "Hello from child as object" });
请参阅 文档 > API > 子进程 以获取完整文档。