node.js child_process 이용해서 윈도우 명령어 실행해보니 한글 깨지는 문제 발생. 이것저것 해봤지만 해결 안돼서 일단 미봉책으로 ...
var exec = require("child_process").exec;
exec("chcp 65001 | dir/w", function (err, stdout, stderr) {
console.log(stdout);
...
});
chcp 65001 는 콘솔창 페이지 코드를 utf-8 로 바꿔주는 용도. 문자열의 charset 을 바꿔주는게 아니니 출력 메시지가 아예 영문으로 바뀌는게 흠이긴 하지만.
참고. node.js 에서 외부 애플리케이션을 실행하는 기본 방법.
https://dzone.com/articles/understanding-execfile-spawn-exec-and-fork-in-node
node.js 에서 외부 애플리케이션을 실행하는 기본 방법 4가지의 용도를 간략하게 정리 설명해놓은 글입니다. 각 펑션의 when 부분만 읽으면 될 듯. 대충 제가 이해한 바는 이렇습니다.
• 애플리케이션 실행 자체가 중요한 경우에는 execFile 이나 exec : 실행 결과(상태 코드나 상태 메시지)가 버퍼에 담깁니다. 버퍼 크기가 2k 인가 그랬던거 같고, 즉 리턴 데이타가 큰 경우 버퍼 풀 나서 에러날 수 있다는 얘기.
• 실행한 애플리케이션의 output(stdout) 메시지가 중요한 경우에는 spawn : 가령 tail -f httpd.log 같은 식의 처리를 하는 경우를 떠올리면 될겁니다. 이 녀석은 stream 타입으로 테이타 리턴합니다. stream 처리 쉽게 해주는 노드 패키지들을 사용하면 유닉스 식의 파이프 방식 같은 걸 쉽게 활용할 수 있으므로 다양한 기능 확장이 가능할 듯.
• 장시간 처리 필요한 애플리케이션 실행하는 경우에는 fork : request 마다 새로운 노드 프로세스 할당해 줌.
'Slack 채널 정리' 카테고리의 다른 글
json validation - readTree (0) | 2019.12.03 |
---|---|
제목 붙이기 애매한 shell script (0) | 2019.12.03 |
powershell 로 winrm 이용하는 예 (0) | 2019.12.03 |
grep, pgrep, fgrep (0) | 2019.12.03 |
정규식 ([\s\S]?) (0) | 2019.12.03 |