hm私もrtmを忘れていない限り、このコードはうまく動作しません。 cp.execの入力オプションはありません。
しかし、stdioオプションがあり、子供の期待されるstdioを開くことができます。
child_process.exec('cat - > /tmp/test1', { stdio: 'pipe' });
は、彼らは我々が終了することができますストリーム、ある、https://nodejs.org/api/child_process.html#child_process_options_stdio
stdio
sが文字列ではありません参照/書き込み
は、標準入力があることをhttps://nodejs.org/api/stream.html
ノートを参照してください/パイプ/クローズ/プッシュなど書き込み可能なstdout/stderrが読み込み可能です。
stdinをcat
と書くには、cp.stdinオブジェクトを使用してend()メソッドを呼び出します。
child_process.exec('cat - > /tmp/test1', { stdio: 'pipe' }).stdin.end('hello world');
endメソッドは、ストリームの終了が続くwriteで、catを終了するように指示する必要があることに注意してください。
これがうまくいくようにするには、stdinをファイルに送信しないようにリファクタリングし、代わりにchild.stdoutをprocess.stdoutにパイプする必要があります。
var child_process = require('child_process');
var cp = child_process.exec('cat -', { stdio: 'pipe' });
cp.stdin.end('hello world');
cp.stdout.pipe(process.stderr);
プロセスはグローバルであることに注意してください。
入力とは何ですか?私は 'exec'のドキュメンテーションのどこにも見当たりません。私はあなたがこれのために 'spawn'を使う必要があると思います。 –
Hmmm。私はそれに気付かなかった。すべての同期プロセスには入力オプションがあり、非同期プロセスには入力オプションはありません。 "input"はstdinに渡す文字列値です。前述のように、私はとにかく同期に切り替わりたいと思います。私の問題の一部は、ライブラリに変数を割り当てる必要があるときに私が混乱するということだと思います。私はそれに慣れていない。変数の名前も重要であるようです。あなたはそのことについていくつか光を当ててください。それが助けになると思います。 – user3311045
私が追いかけるだけの方がいいかもしれない。 child_process.execではなくchild_process.execSyncを使用するように私のコードをどのように変更するのですか?私は、コードの2行目で "child_process.exec"を "child_process.execSync"に変更するだけで簡単にやり遂げることができると思います。しかし、それは動作していないようです。 exec.Syncメソッドが存在しないという苦情があります。 – user3311045