child_process を使用して、node.js アプリケーションで lftp プログラムをラップしようとしています。問題は、lftp がその出力を stdout に書き込まないため、node.js でその出力をキャッチできないことです。サンプルコード:
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();
lftp 子プロセスの stdin.end() を呼び出す行のコメントを外すと、ls コマンドからの出力が正常に端末に表示されます。そうしないと、プロセスが単にハングし、何も出力されません。
unbuffer も使用してみましたが、lftp の stdin に書き込むことができなくなったようです。通常の「[Resolving host address...]」を出力しますが、ls コマンドからの出力は出力しません。
私の質問は: node.js の child_process を使用して lftp と対話できるようにするには、どうすればよいですか?