我還在用Node.js弄溼我的腳,但我有一些想法。首先,我相信你需要使用execFile
而不是spawn
; execFile
適用於具有指向腳本的路徑,而spawn
用於執行Node.js可以根據系統路徑解析的衆所周知的命令。
var child = require('child_process').execFile('path/to/script', [
'arg1', 'arg2', 'arg3',
], function(err, stdout, stderr) {
// Node.js will invoke this callback when the
console.log(stdout);
});
var child = require('child_process').execFile('path/to/script', [
'arg1', 'arg2', 'arg3' ]);
// use event hooks to provide a callback to execute when data are available:
child.stdout.on('data', function(data) {
console.log(data.toString());
});
此外,似乎有選項,由此您可以從Node的控制終端分離產生的進程,這將允許它異步運行。我沒有測試過這個呢,但也有在API docs能像這樣一些例子:
child = require('child_process').execFile('path/to/script', [
'arg1', 'arg2', 'arg3',
], {
// detachment and ignored stdin are the key here:
detached: true,
stdio: [ 'ignore', 1, 2 ]
});
// and unref() somehow disentangles the child's event loop from the parent's:
child.unref();
child.stdout.on('data', function(data) {
console.log(data.toString());
});
獎勵積分,你可以解釋如何使用EXEC(),因爲我需要執行一個shell CMD做到這一點。 – DynamicDan
你可以使用'child.spawn()''shell'選項設置爲'true'。 https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options – CedX
你也可以通過'child.stdout.pipe(process.stdout);' – darkadept