2

NodeJSで子プロセスを開始し、その出力を変数に保存したいとします。次のコードは、標準出力にそれを与える:testの値はHello WorldになるはずだったNodeJSの親の変数に子プロセスの出力を保存する

var test; 
require("child_process").execSync("echo Hello World", {"stdio": "test"}); 
console.log(test); 

require("child_process").execSync("echo Hello World", {"stdio": "inherit"}); 

私は、このコードに似て心の中で何かを持っています。

"test"は有効なstdio値ではないため、動作しません。

おそらく、これは環境変数を使用して可能ですが、結果が親にはまだ見えるように、子プロセスでそれらを変更する方法を見つけられませんでした。

答えて

3

execSyncを使用すると、次のコードで変数にその出力を保存することができますので、あなたが、渡すコマンドの戻り標準出力機能である:

var child_process = require("child_process"); 
var test = child_process.execSync("echo Hello World"); 
console.log(test); 
// => "Hello World" 

が、これはエラーをスローすることに注意してくださいプロセスの終了コードがゼロでない場合また、をchild_process.execSyncとして返すことがありますので、Bufferを返す必要があります。

+4

ありがとうございました!私は 'test.toString()'を使わなければならないことを付け加えたい。そうでなければ 'Buffer 48 65 6c 6c 6f 20 57 6f 72 6c 64 0a>'という出力があった。 – pfo

+0

@pfoはこれに気付くでしょう - 私はローカルコピーがそれをしていないのでバージョンによって異なると思います。 – Aurora0001

関連する問題