Skip to content

Используйте Bun.spawn() для создания дочернего процесса. При запуске второго процесса bun можно открыть прямой канал межпроцессного взаимодействия (IPC) между двумя процессами.

NOTE

Этот API совместим только с другими процессами `bun`. Используйте `process.execPath` для получения пути к текущему исполняемому файлу `bun`.
ts
const child = Bun.spawn(["bun", "child.ts"], {
  ipc(message) {
    /**
     * Сообщение, полученное от дочернего процесса
     **/
  },
});

Родительский процесс может отправлять сообщения дочернему процессу с помощью метода .send() в возвращённом экземпляре Subprocess. Ссылка на отправляющий дочерний процесс также доступна как второй аргумент в обработчике ipc.

ts
const childProc = Bun.spawn(["bun", "child.ts"], {
  ipc(message, childProc) {
    /**
     * Сообщение, полученное от дочернего процесса
     **/
    childProc.send("Ответ дочернему процессу");
  },
});

childProc.send("Я твой отец"); // Родитель также может отправлять сообщения дочернему процессу

Тем временем дочерний процесс может отправлять сообщения родителю с помощью process.send() и получать сообщения с process.on("message"). Это тот же API, что используется для child_process.fork() в Node.js.

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 > Дочерние процессы для полной документации.

Bun от www.bunjs.com.cn