我正在尝试使用child_process将lftp程序包装在node.js应用程序中。问题是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了。它输出通常的“[解析主机地址...]”内容,但不输出ls命令的输出。
我的问题是:我需要做些什么才能使用node.js'child_process与lftp进行交互?
答案 0 :(得分:0)