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

Popular posts from this blog

routing - AngularJS State management ->load multiple states in one page -

python - GRASS parser() error -

Swift game error message -