【问题标题】:How to spawn child process and communicate with it Deno?如何产生子进程并与它通信 Deno?
【发布时间】:2020-09-17 00:01:47
【问题描述】:

假设我有 2 个脚本,father.ts 和 child.ts,我如何从father.ts 生成 child.ts 并定期从father.ts 向 child.ts 发送消息?

【问题讨论】:

    标签: deno


    【解决方案1】:

    您可以使用子进程。这是一个例子:proc with PushIterable

    这将允许您从非 Deno 子进程以及 Deno 子进程异步发送和接收多个命令。

    要小心,因为这需要--allow-run 才能工作,如果您关心的话,这几乎总是会突破沙盒。

    【讨论】:

      【解决方案2】:

      你必须使用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();
      };
      

      您可以使用.postMessage发送消息

      【讨论】:

      • 但节点中的子进程允许您运行终端命令。好像没有
      • 如果你想生成 shell 命令,可以使用 Deno.run。
      • stackoverflow.com/questions/61710787/… 在那里查看我的答案
      • 非常有帮助,谢谢。我是否能够在 Deno 中为同一个正在运行的进程发送多个命令并接收多个响应?我很难找到例子。
      • 在我的一个例子中,我展示了如何写信给stdin。您需要从标准输出读取并写入标准输入。
      猜你喜欢
      • 2012-07-07
      • 1970-01-01
      • 1970-01-01
      • 2014-08-03
      • 1970-01-01
      • 2012-02-16
      • 1970-01-01
      • 2021-12-16
      • 2013-08-23
      相关资源
      最近更新 更多