子程序:收集輸出
在 Github 上編輯
我們不常單獨編寫程式。在許多情況下,我們希望與外部系統互動,而產生子程序是一種常見的方式。
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://deno-docs.dev.org.tw/examples/scripts/subprocesses_output.ts