How to wait for a child process to finish in Node.js
I'm running a Python script through a child process in Node.js, like this:
require('child_process').exec('python celulas.py', function (error, stdout, stderr) {
child.stdout.pipe(process.stdout);
});
but Node doesn't wait for it to finish. How can I wait for the process to finish?
Is it possible to do this by running the child process in a module I call from the main script?
Solution 1:
Use exit
event for the child process.
var child = require('child_process').exec('python celulas.py')
child.stdout.pipe(process.stdout)
child.on('exit', function() {
process.exit()
})
PS: It's not really a duplicate, since you don't want to use sync code unless you really really need it.
Solution 2:
NodeJS supports doing this synchronously.
Use this:
const execSync = require("child_process").execSync;
const result = execSync("python celulas.py");
// convert and show the output.
console.log(result.toString("utf8"));
Remember to convert the buffer into a string. Otherwise you'll just be left with hex code.