2012-06-01 1 views
0

child_process를 사용하여 node.js 응용 프로그램에서 lftp 프로그램을 랩하려고합니다. 문제는 lftp가 출력을 stdout에 쓰지 않기 때문에 node.js에서 출력을 잡을 수 없다는 것입니다. 샘플 코드는 : 나는 lftp가 자식 프로세스를위한 stdin.end()를 호출하는 행의 주석을 해제하면먼저 프로세스를 닫지 않고 lftp 쓰기를 stdout에 작성하십시오.

var proc = require('child_process').spawn('lftp', ['-p', port, '-u', username + ',' + password, host]); 

proc.stdout.on('data', function (data) { 
    console.log('stdout:', data.toString('utf-8')); 
}); 

proc.on('exit', function (code) { 
    console.log('process exited with code ' + code); 
}); 

proc.stdin.write('ls'); 
// proc.stdin.end(); 

, ls 명령의 출력은 정상적으로 내 터미널에 나타납니다. 내가하지 않으면 프로세스가 멈추고 아무 것도 출력되지 않습니다.

나는 언 버퍼 (unbuffer)를 사용해 보았지만, 더 이상 lftp의 stdin에 쓰지 않는 것 같습니다. 그것은 일반적인 "[해결 호스트 주소 ...]"항목을 출력하지만 ls 명령의 출력은 출력하지 않습니다.

내 질문은 : node.js 'child_process를 사용하여 lftp와 상호 작용할 수있게하려면 어떻게해야합니까?

+0

대화식 FTP 클라이언트와의 인터페이스를 시도하는 이유는 무엇입니까? http://npmjs.org는 노드에 대한 몇 가지 FTP 모듈을 나열합니다. – lanzz

+0

그들 중 누구도 명시 적 TTL/SSL, SFTP 등을 통한 FTP 지원을 제공하지 않습니다. child_process를 사용하여 기존 FTP 클라이언트를 래핑하는 것이 더 쉬울 것이라고 생각했습니다. –

답변

0

음, 이것은 바보 같았습니다. stsin에 ls 명령 다음에 개행 문자를 쓰는 것을 잊었습니다. 그것은 unbuffer 필요없이 작동하는 것 같습니다.

관련 문제