Bun.spawn() を使用して子プロセスを生成します。2 番目の bun プロセスを生成する場合、2 つのプロセス間で直接のプロセス間通信(IPC)チャネルを開くことができます。
NOTE
この API は他の `bun` プロセスとのみ互換性があります。`process.execPath` を使用して、現在実行中の `bun` 実行可能ファイルへのパスを取得します。ts
const child = Bun.spawn(["bun", "child.ts"], {
ipc(message) {
/**
* 子プロセスから受信したメッセージ
**/
},
});親プロセスは、返された Subprocess インスタンスの .send() メソッドを使用してサブプロセスにメッセージを送信できます。送信サブプロセスへの参照は、ipc ハンドラの 2 番目の引数としても利用できます。
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 > 子プロセス を参照してください。