Skip to content

Utilisez Bun.spawn() pour démarrer un processus enfant. Lors du démarrage d'un second processus bun, vous pouvez ouvrir un canal de communication inter-processus (IPC) direct entre les deux processus.

NOTE

Cette API est uniquement compatible avec d'autres processus `bun`. Utilisez `process.execPath` pour obtenir le chemin de l'exécutable `bun` en cours d'exécution.
ts
const child = Bun.spawn(["bun", "child.ts"], {
  ipc(message) {
    /**
     * Le message reçu du sous-processus
     **/
  },
});

Le processus parent peut envoyer des messages au sous-processus en utilisant la méthode .send() sur l'instance Subprocess retournée. Une référence au sous-processus envoyeur est également disponible comme deuxième argument dans le gestionnaire ipc.

ts
const childProc = Bun.spawn(["bun", "child.ts"], {
  ipc(message, childProc) {
    /**
     * Le message reçu du sous-processus
     **/
    childProc.send("Répondre à l'enfant");
  },
});

childProc.send("Je suis ton père"); // Le parent peut aussi envoyer des messages à l'enfant

Pendant ce temps, le processus enfant peut envoyer des messages à son parent en utilisant process.send() et recevoir des messages avec process.on("message"). C'est la même API utilisée pour child_process.fork() dans Node.js.

ts
process.send("Bonjour depuis l'enfant en tant que chaîne");
process.send({ message: "Bonjour depuis l'enfant en tant qu'objet" });

process.on("message", message => {
  // afficher le message du parent
  console.log(message);
});

Tous les messages sont sérialisés en utilisant l'API serialize de JSC, qui permet le même ensemble de types transférables pris en charge par postMessage et structuredClone, y compris les chaînes, les tableaux typés, les flux et les objets.

ts
// envoyer une chaîne
process.send("Bonjour depuis l'enfant en tant que chaîne");

// envoyer un objet
process.send({ message: "Bonjour depuis l'enfant en tant qu'objet" });

Consultez Docs > API > Processus enfants pour la documentation complète.

Bun édité par www.bunjs.com.cn