2014-09-10 1 views
0

node.js와 하위 프로세스로 실행되는 실행 파일 간의 통신을 테스트하고 있습니다. 실행 파일은 node.js에서 child_process.spawn()을 통해 실행되며 그 출력은 node.js에 의해 모니터링됩니다. 필자는 Linux 및 Windows OS에서이 기능을 테스트하고 있습니다.node.js와 제대로 통신하는 실행 파일을 만들 수 없습니다.

tail -f /var/log/syslog을 성공적으로 생성했지만 출력물을 들었지만 내 자신의 실행 파일은 node.js에 캡처되었을 때 어떤 형식이든 stdout에 올바르게 쓸 수 없습니다.

테스트 코드 :

#include <iostream> 
#include <stdio.h> 
#include <unistd.h> 

int main() 
{ 
    using namespace std; 

    long x = 1; 

    while (true) 
    { 

     fprintf(stdout, "xtime - %ld\n", x++); 
     usleep(1000000); 
    } 
} 

(참고 : 일부 include의 쓸모가있을 수 있습니다, 나는 그들을 선택하지했습니다)

+0

'fprintf()'다음에'fflush (stdout);'를 추가 했습니까? – mscdex

+0

@mscdex 그랬어! 나는 잔소리하는듯한 느낌이 들었다. 그런 느낌 이었지만, 더 복잡한 것이 었는지 항상 확신했다. 정답을 게시하면 기꺼이 받아 들일 것입니다. 감사. – Doc

답변

1

stdout 출력 (적어도 * nix에서 스크립트에) 자동으로 플러시하지 않을 때 stdout 는 tty가 아닙니다 (출력에 개행이 있어도, 그렇지 않으면 개행은 일반적으로 stdout이 tty 일 때 플러시됩니다).

stdout을 완전히 비활성화하거나 setbuf(stdout, NULL);을 사용하여 버퍼링을 해제하거나 fflush(stdout);을 통해 수동으로 출력을 플러시 할 수 있습니다.

관련 문제