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(...)
호출은이 간단한 예제에서 이전 명령이 완료되었는지 확인하기위한 것입니다.