javascript - Out of order output when running multiple processes with spawn on node.js -
i'm using spawn run multiple processes in node. here's code:
var spawn = require('child_process').spawn; var log_spawn = function (out) { process.stdout.write(out); }; var exec_1 = spawn('command1', ['-args1'); exec_1.stdout.on('data', log_spawn); exec_1.stderr.on('data', log_spawn); var exec_2 = spawn('command2', ['-args2'); exec_2.stdout.on('data', log_spawn); exec_2.stderr.on('data', log_spawn); it's working ok, output out of order.
for example, if run 2 commands in standard command line, following output:
output_command1_line1 output_command1_line2 output_command2_line1 output_command2_line2 however, when use node spawn, following:
output_command1_line1 output_command2_line1 output_command1_line2 output_command2_line2 what can fix see messages in same order see them on regular command line?
command2 starts running before command1 finishes, therefore output of command1 , command2 interleaved. if want command2 start after command1 finishes, can listen exit event on exec_1
var spawn = require('child_process').spawn; var log_spawn = function (out) { process.stdout.write(out); }; var exec_1 = spawn('command1', ['-args1'); exec_1.stdout.on('data', log_spawn); exec_1.stderr.on('data', log_spawn); exec_1.stderr.on('exit', function(exitcode) { var exec_2 = spawn('command2', ['-args2'); exec_2.stdout.on('data', log_spawn); exec_2.stderr.on('data', log_spawn); });
Comments
Post a Comment