乐闻世界logo
搜索文章和话题

如何生成子进程并与之通信Deno?

4 个月前提问
3 个月前修改
浏览次数8

1个答案

1

在Deno中,生成子进程并与之通信可以通过使用 Deno.run 方法来实现。这个方法可以启动一个新的子进程,并允许主进程与子进程之间的标准输入输出流(stdin, stdout, stderr)进行交互。下面是一个具体的示例,展示了如何在Deno中创建一个子进程来执行一个简单的Shell命令,并读取它的输出结果:

示例:在Deno中生成子进程并读取输出

  1. 首先,确保你的Deno环境已经设置好,并具有运行时需要的权限。

    这个示例中,我们会使用 ls 命令来列出当前目录的内容,这个命令不需要额外的文件系统权限。

  2. 编写代码:

    typescript
    // 创建一个子进程来执行 `ls` 命令 const process = Deno.run({ cmd: ["ls"], // 在数组中指定要运行的命令及其参数 stdout: "piped", // 配置stdout为管道,这样我们可以读取输出 stderr: "piped" // 配置stderr为管道,用于错误处理 }); // 读取并解码子进程的输出 const output = await process.output(); // 等待stdout流 const outStr = new TextDecoder().decode(output); // 将Uint8Array解码为字符串 // 错误处理:读取并解码子进程的错误输出 const errorOutput = await process.stderrOutput(); const errorStr = new TextDecoder().decode(errorOutput); // 输出子进程的结果 console.log("stdout:", outStr); if (errorStr) { console.log("stderr:", errorStr); } // 关闭子进程的流,并等待其结束 process.close(); const status = await process.status(); // 等待子进程结束并获取其退出状态 console.log("Process exited with status", status.code);
  3. 运行代码:

    在命令行中,你需要使用以下命令来运行你的Deno脚本,假设你的脚本文件名为 run_ls.ts

    bash
    deno run --allow-run run_ls.ts

    这里 --allow-run 是必要的权限标志,允许Deno运行子进程。

总结:

在这个示例中,我们使用了Deno的API来启动一个子进程,通过管道获取了其标准输出和错误输出。这种方法对于执行外部程序并处理其输出非常有效,可以用于各种自动化脚本和系统管理任务。通过适当的权限管理,Deno也为开发者提供了一种安全的方式来执行这些操作。

2024年8月24日 16:15 回复

你的答案