Skip to content

Usa Bun.spawn() per eseguire un processo figlio. Quando si esegue un secondo processo bun, puoi aprire un canale di comunicazione inter-processo (IPC) diretto tra i due processi.

NOTE

Questa API è compatibile solo con altri processi `bun`. Usa `process.execPath` per ottenere un percorso all'eseguibile `bun` attualmente in esecuzione.
ts
const child = Bun.spawn(["bun", "child.ts"], {
  ipc(message) {
    /**
     * Il messaggio ricevuto dal sottoprocesso
     **/
  },
});

Il processo genitore può inviare messaggi al sottoprocesso usando il metodo .send() sull'istanza Subprocess restituita. Un riferimento al sottoprocesso mittente è anche disponibile come secondo argomento nel gestore ipc.

ts
const childProc = Bun.spawn(["bun", "child.ts"], {
  ipc(message, childProc) {
    /**
     * Il messaggio ricevuto dal sottoprocesso
     **/
    childProc.send("Rispondi al figlio");
  },
});

childProc.send("Sono tuo padre"); // Il genitore può anche inviare messaggi al figlio

Nel frattempo, il processo figlio può inviare messaggi al suo genitore usando process.send() e ricevere messaggi con process.on("message"). Questa è la stessa API usata per child_process.fork() in Node.js.

ts
process.send("Ciao dal figlio come stringa");
process.send({ message: "Ciao dal figlio come oggetto" });

process.on("message", message => {
  // stampa messaggio dal genitore
  console.log(message);
});

Tutti i messaggi sono serializzati usando l'API serialize di JSC, che consente lo stesso insieme di tipi trasferibili supportati da postMessage e structuredClone, incluse stringhe, array tipizzati, stream e oggetti.

ts
// invia una stringa
process.send("Ciao dal figlio come stringa");

// invia un oggetto
process.send({ message: "Ciao dal figlio come oggetto" });

Consulta Docs > API > Child processes per la documentazione completa.

Bun a cura di www.bunjs.com.cn