节点 child.exec 工作但 child.spawn 不工作
Node child.exec working but child.spawn not
我正在尝试使用 Child Spawn(不工作)而不是 Exec(工作)。我的 Exec 代码为我提供了控制台输出,如果我 运行 我的 child spawn 代码我什么也看不到,我如何使用 Child Spawn 获得控制台输出:
这是我的工作执行代码:
var exec = require('child_process').exec,
child;
child = exec('myProgram --version', {},
function (error, stdout, stderr) {
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
});
child.stdout.on('data', function(data) {
console.log(data.toString());
});
child.stderr.on('data', function (data) {
console.log('stderr: ' + data);
});
这是我尝试使用 spawn 的无效尝试:
var spawn = require('child_process').spawn;
var spawnchild = spawn('myProgram', ['--version']);
spawnchild.stdout.on('data', function(data) {
console.log('stdout: ' + data);
});
spawnchild.stderr.on('data', function(data) {
console.log('stdout: ' + data);
});
如果您为 spawnchild
添加 'close' 事件处理程序,您将看到一个非零退出代码。原因是 spawn()
的第一个参数不同于 exec()
的第一个参数。 exec()
接受完整的命令行字符串,而 spawn()
只有程序 name/path 作为第一个参数,第二个参数是传递给该程序的命令行参数数组。
所以在你的特定情况下,你会使用:
var spawnchild = spawn('myProgram', ['--version']);
我正在尝试使用 Child Spawn(不工作)而不是 Exec(工作)。我的 Exec 代码为我提供了控制台输出,如果我 运行 我的 child spawn 代码我什么也看不到,我如何使用 Child Spawn 获得控制台输出:
这是我的工作执行代码:
var exec = require('child_process').exec,
child;
child = exec('myProgram --version', {},
function (error, stdout, stderr) {
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
});
child.stdout.on('data', function(data) {
console.log(data.toString());
});
child.stderr.on('data', function (data) {
console.log('stderr: ' + data);
});
这是我尝试使用 spawn 的无效尝试:
var spawn = require('child_process').spawn;
var spawnchild = spawn('myProgram', ['--version']);
spawnchild.stdout.on('data', function(data) {
console.log('stdout: ' + data);
});
spawnchild.stderr.on('data', function(data) {
console.log('stdout: ' + data);
});
如果您为 spawnchild
添加 'close' 事件处理程序,您将看到一个非零退出代码。原因是 spawn()
的第一个参数不同于 exec()
的第一个参数。 exec()
接受完整的命令行字符串,而 spawn()
只有程序 name/path 作为第一个参数,第二个参数是传递给该程序的命令行参数数组。
所以在你的特定情况下,你会使用:
var spawnchild = spawn('myProgram', ['--version']);