How to spawn child process and communicate with it Deno?

Viewed 1637

Suppose I have 2 script, father.ts and child.ts, how do I spawn child.ts from father.ts and periodically send message from father.ts to child.ts ?

2 Answers

You have to use the Worker API

father.ts

const worker = new Worker("./child.ts", { type: "module", deno: true });
worker.postMessage({ filename: "./log.txt" });

child.ts

self.onmessage = async (e) => {
  const { filename } = e.data;
  const text = await Deno.readTextFile(filename);
  console.log(text);
  self.close();
};

You can send messages using .postMessage

You can use child processes. Here is an example: proc with PushIterable

This will let you send and receive multiple commands from non-Deno child processes asynchronously, as well as Deno child processes.

Be careful as this requires --allow-run to work, and this almost always breaks out of the sandbox, if you care about that.

Related