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()
来解码。