Skip to content

자식 프로세스를 생성하려면 Bun.spawn() 을 사용합니다. 두 번째 bun 프로세스를 생성할 때 두 프로세스 간에 직접 프로세스 간 통신 (IPC) 채널을 열 수 있습니다.

NOTE

이 API 는 다른 `bun` 프로세스와만 호환됩니다. `process.execPath` 를 사용하여 현재 실행 중인 `bun` 실행 파일의 경로를 가져옵니다.
ts
const child = Bun.spawn(["bun", "child.ts"], {
  ipc(message) {
    /**
     * 하위 프로세스에서 받은 메시지
     **/
  },
});

부모 프로세스는 반환된 Subprocess 인스턴스의 .send() 메서드를 사용하여 하위 프로세스에 메시지를 보낼 수 있습니다. 보내는 하위 프로세스에 대한 참조는 ipc 핸들러의 두 번째 인수에서도 사용할 수 있습니다.

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 를 사용하여 직렬화되며 이는 postMessagestructuredClone 에서 지원하는 것과 동일한 전송 가능한 유형 집합 (문자열, 타입 배열, 스트림 및 객체 포함) 을 허용합니다.

ts
// 문자열 보내기
process.send("문자열로 자식에서 보낸 인사");

// 객체 보내기
process.send({ message: "객체로 자식에서 보낸 인사" });

전체 문서는 문서 > API > 자식 프로세스 를 참조하세요.

Bun by www.bunjs.com.cn 편집