5
首先,我是一個完整的小白和如何使用Node.js昨天開始(也正是在多年使用Linux我第一次),所以請好的,明確的如何獲取Node.JS中派生的child_process的輸出?
我目前正在製作的node.js程序,其中包括啓動shell命令(主要是:掛載USB驅動器)。 我目前使用
var spawn = require('child_process').spawnSync;
function shspawn(command) {
spawn('sh', ['-c', command], { stdio: 'inherit' });
}
shspawn('echo Hello world');
shspawn('mkdir newdir');
等,這是一個非常舒適的方式來爲我做。 的問題是,我想存儲的輸出,例如,「LS」在一個變量的命令,在某種程度上像
var result = shspawn('ls -l')
我讀過一些在線的例子,但他們很少用菌種當他們這樣做,它不適合我(我想我可能做錯了什麼,但我再次在節點noob)
如果你們有比使用child_process_spawnSync更好的主意,我打開任何想法,但我想盡可能長時間保持我的程序無包裝:)
編輯:我需要它同步工作!這就是爲什麼我開始使用spawnSync。我將使用一些像dd這樣的命令,這需要時間,並且在程序轉到另一個命令之前需要完成。
它給我這個錯誤: 'child.stdout.on( '數據',功能(數據){的console.log('ls命令輸出: '+ data);}); ^ TypeError:無法讀取屬性'on'的空' – Squiller
編輯答案只是微小的變化,它似乎是爲我工作。再試一次。我正在使用節點版本'v4.2.4'順便說一句。 –
它適用於spawn,謝謝:) 但我需要它與spawnSync一起工作,因爲我希望等到每個命令結束後再去另一個命令。 截至目前,我有一個執行命令的工作函數,但即使在命令能夠返回任何內容之前,NodeJS仍然在程序中繼續前進。已更新 – Squiller