0
我正在試圖使用child_process將lftp程序包裝到node.js應用程序中。問題是lftp不會將其輸出寫入stdout,所以我無法在node.js中捕獲它的輸出。示例代碼:使lftp寫入標準輸出而不必先關閉進程
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();
如果我取消調用stdin.end()爲lftp的子進程的線,從ls命令的輸出出現在我的終端,因爲它應該。如果我不這樣做,這個過程簡單地掛起來,什麼都不會輸出。
我也試過使用unbuffer,但它似乎不允許我寫入lftp的stdin了。它輸出通常的「[解析主機地址...]」東西,但不是來自ls命令的輸出。
我的問題是:爲了能夠使用node.js的child_process與lftp進行交互,我需要做些什麼?
你爲什麼試圖與交互式FTP客戶端接口? http://npmjs.org列出了幾個用於節點的FTP模塊。 – lanzz
他們都不支持通過顯式TTL/SSL,SFTP等FTP。我認爲使用child_process包裝現有的FTP客戶端可能更容易。 –