簡體   English   中英

獲取在Node.js中生成子進程的結果

[英]Get result of spawning child process in Node.js

如何執行子進程並獲取結果退出代碼和輸出(stdout,stderr)?

就像是

let spawnResult = Node.Child_process.spawnSync("ls");

Js.log("Exit code: " ++ spawnResult.status);

Js.log("Stdout: " ++ spawnResult.stdout);

Js.log("Stderr: " ++ spawnResult.stderr);

不幸的是,這會導致編譯錯誤:

Unbound record field status

這里有幾個問題:

  1. spawnResult實際上是抽象類型,必須在使用前使用Node.Child_process.readAs轉換為Js Object。

  2. 使用##運算符訪問JavaScript對象字段。 . 保留用於訪問記錄字段(而#表示普通的OCaml對象)。

另外, ++只連接字符串,而statusint ,而stdoutstderrstring_buffer 因此,您需要使用字符串插值(可自動轉換為string ,在連接之前手動將其轉換,或使用Js.log2

使用字符串插值:

let status = Node.Child_process.readAs(spawnResult)##status;
Js.log({j|Exit code: $status|j});

使用手動字符串轉換

Js.log("Exit code: " ++ string_of_int(Node.Child_process.readAs(spawnResult)##status));

使用Js.log2

Js.log2("Exit code: ", Node.Child_process.readAs(spawnResult)##status);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM