使用 Bun.spawn() 生成子进程。当生成第二个 bun 进程时,你可以在两个进程之间打开直接的进程间通信 (IPC) 通道。
NOTE
此 API 仅与其他 `bun` 进程兼容。使用 `process.execPath` 获取当前运行的 `bun` 可执行文件的路径。ts
const child = Bun.spawn(["bun", "child.ts"], {
ipc(message) {
/**
* 从子进程接收的消息
**/
},
});父进程可以使用返回的 Subprocess 实例上的 .send() 方法向子进程发送消息。发送子进程的引用也可在 ipc 处理程序的第二个参数中获得。
ts
const childProc = Bun.spawn(["bun", "child.ts"], {
ipc(message, childProc) {
/**
* 从子进程接收的消息
**/
childProc.send("响应子进程");
},
});
childProc.send("我是你的父亲"); // 父进程也可以向子进程发送消息同时,子进程可以使用 process.send() 向父进程发送消息,并使用 process.on("message") 接收消息。这与 Node.js 中 child_process.fork() 使用的 API 相同。
ts
process.send("来自子进程的字符串消息");
process.send({ message: "来自子进程的对象消息" });
process.on("message", message => {
// 打印来自父进程的消息
console.log(message);
});所有消息都使用 JSC serialize API 进行序列化,它允许使用与 postMessage 和 structuredClone 支持的相同 可传输类型,包括字符串、类型化数组、流和对象。
ts
// 发送字符串
process.send("来自子进程的字符串消息");
// 发送对象
process.send({ message: "来自子进程的对象消息" });请参阅 文档 > API > 子进程 获取完整文档。