0
child_process
モジュールのノードのspawn
/exec
機能を使用しようとしています。しかし、私は実際の端末とコマンドラインで見たものの間に奇妙な違いがあることに気付いています。ここでは例です:ノードchild_processがstdoutにすべてを書き込んでいない
ターミナル:Node.jsの中
$ redis-cli
127.0.0.1:6379> hmset hash name Jack age 33
OK
127.0.0.1:6379> hscan hash 0
1) "0"
2) 1) "name"
2) "Jack"
3) "age"
4) "33"
:
const child = exec("redis-cli");
child.stdin.setDefaultEncoding("utf-8");
child.stdout.on("data", data => console.log(data.toString()));
child.stdin.write("hmset hash name Jack age 33\n"); // same as first command from cli example
await new Promise(r => setTimeout(r, 1000));
child.stdin.write("hscan hash 0\n"); // same as second command from cli example
await new Promise(r => setTimeout(r, 1000));
これはコンソールに書き込まれますものです:この場合
OK
0
name
Jack
age
33
番号1)
、2)
などがありません。 child_process
もコンソールに書き込むように説得することができますか?私は、この特定の例は、redis-cli
がどのように実装されているのかという奇抜であると推測していますが、データは必ずどこに行く必要があります。
await new Promise(...)
この単純な例で前のコマンドが終了したことを確認するだけです。