爱学习的好孩子

Deno如何创建子进程并读取输出

时间: 2024-06-01

示例:

// 创建子进程
const p = Deno.run({
  cmd: ["echo", "hello"],
});

// 等待完成
await p.status();

然后运行:

$ deno run --allow-run ./test.ts
hello

默认情况下,当调用 Deno.run() 时,子进程将继承父进程的标准流。如果想要和子进程通信,可以使用 piped选项。

// 创建子进程
const p = Deno.run({
  cmd: ["echo", "hello"],
  stdout: "piped",
  stderr: "piped",
});
const { code } = await p.status();

if (code === 0) {
  const rawOutput = await p.output();
  await Deno.stdout.write(rawOutput);
} else {
  const rawError = await p.stderrOutput();
  const errorString = new TextDecoder().decode(rawError);
  console.log(errorString);
}

output()出来的是Uint8Array,可以使用new TextDecoder().decode()来解码。

评论