在node.js中使用子进程,在命令完成时调用函数

时间:2016-04-29 18:22:49

标签: node.js

我正在制作一个程序,我需要通过node.js执行一些linux命令。

像这样

final_command.stdout.on('data', function(data) { 
    fs.writeFile(dates+'.html', data, function(err){
        if(err){
            return console.error(err);
        }
    });
});

final_command.stderr.on('data', function(data) { 
    console.log('stderr: '+data);
});

final_command.on('exit', function(code) { 

}); 

这里我将输出保存为HTML文件。

现在运行程序的其他部分

我应该将它放在final_command.on部分中,还是如何调用该部分中的函数?

我知道这是一个蹩脚的问题,但仍然存在。

1 个答案:

答案 0 :(得分:0)

问题'我应该将它放在final_command.on部分中,还是如何调用该部分中的函数?'目前还不清楚。 你的意思是问如何填写final_command?如果是这样,以下是您将如何做到这一点。

var spawn = require('child_process').spawn;
var fs = require('fs');
var dates = 'dates';

var command = 'ls';
var final_command = spawn(command);

final_command.stdout.on('data', function childoutdata) { 
    fs.writeFile(dates+'.html', data, function childdatawrite(err){
        if(err){
            return console.error(err);
        }
    });
});

final_command.stderr.on('data', function(data) { 
    console.log('stderr: '+data);
});

final_command.on('exit', function childexit(code) { 

});

如果问题是在文件操作后如何以及何时继续工作,则取决于: 如果子进程操作,数据到达和写入文件应该先于所有内容,那么您应该在childdatawrite中编写其余的代码。 如果子进程就是您关心的所有内容,那么您应该在childexit中编写其余的代码。 如果其余代码与子业务不同步,则可以将代码放在当前块之外。

希望这有帮助。