子进程:收集输出
我们并不总是孤立地编写程序。在很多情况下,我们希望与外部系统进行交互,而生成子进程是实现这一目的的常见方法。
Deno 命名空间提供了一个统一的 API 来与外部系统交互,称为 Deno.Command。通过它,我们可以初始化有关命令的一些信息,但不会立即执行它。
const command = new Deno.Command("deno", {
args: [
"eval",
"\
console.log('hello from deno'); \
console.error('hello from stderr'); \
",
],
});
在最简单的用例中,我们只想运行进程直到完成。这可以使用 command.output() 来实现。
let result = await command.output();
也可以使用 command.outputSync() 同步实现。
result = command.outputSync();
现在我们可以与 stdout 和 stderr 进行交互。
const textDecoder = new TextDecoder();
console.log("stdout:", textDecoder.decode(result.stdout));
console.log("stderr:", textDecoder.decode(result.stderr));
使用 Deno CLI 在本地运行 此示例
deno run --allow-run https://docs.deno.org.cn/examples/subprocesses-output.ts