Skip to content

Use Bun.spawn() para spawnar um processo filho. Ao spawnar um segundo processo bun, você pode abrir um canal de comunicação interprocesso (IPC) direto entre os dois processos.

NOTE

Esta API é compatível apenas com outros processos `bun`. Use `process.execPath` para obter um caminho para o executável `bun` em execução atualmente.
ts
const child = Bun.spawn(["bun", "child.ts"], {
  ipc(message) {
    /**
     * A mensagem recebida do subprocesso
     **/
  },
});

O processo pai pode enviar mensagens para o subprocesso usando o método .send() na instância Subprocess retornada. Uma referência ao subprocesso de envio também está disponível como o segundo argumento no manipulador ipc.

ts
const childProc = Bun.spawn(["bun", "child.ts"], {
  ipc(message, childProc) {
    /**
     * A mensagem recebida do subprocesso
     **/
    childProc.send("Responder ao filho");
  },
});

childProc.send("Eu sou seu pai"); // O pai também pode enviar mensagens para o filho

Enquanto isso, o processo filho pode enviar mensagens para seu pai usando process.send() e receber mensagens com process.on("message"). Esta é a mesma API usada para child_process.fork() no Node.js.

ts
process.send("Olá do filho como string");
process.send({ message: "Olá do filho como objeto" });

process.on("message", message => {
  // imprimir mensagem do pai
  console.log(message);
});

Todas as mensagens são serializadas usando a API serialize do JSC, que permite o mesmo conjunto de tipos transferíveis suportados por postMessage e structuredClone, incluindo strings, arrays tipados, streams e objetos.

ts
// enviar uma string
process.send("Olá do filho como string");

// enviar um objeto
process.send({ message: "Olá do filho como objeto" });

Veja Docs > API > Child processes para documentação completa.

Bun by www.bunjs.com.cn edit