Skip to content

Instantly share code, notes, and snippets.

@glennblock
Created June 18, 2012 08:53
Show Gist options
  • Save glennblock/2947545 to your computer and use it in GitHub Desktop.
Save glennblock/2947545 to your computer and use it in GitHub Desktop.
child processes
//child_process.js
var util = require('util'),
child_process = require('child_process'),
child,
cmd;
var os = require('os');
exec();
spawn();
fork();
function exec() {
cmd = os.platform() == 'win32' ? 'dir' : 'ls';
console.log('exec Command:' + cmd + '\n');
child = child_process.exec(cmd,
function (error, stdout, stderr) {
console.log('exec:stdout:\n' + stdout);
console.log('exec:stderr:\n' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
});
}
function spawn() {
var cmd, args;
if (os.platform() == 'win32') {
cmd = 'cmd';
args = ['/k','dir'];
}
else {
cmd = 'ls';
args = [];
}
console.log('spawn command:' + cmd + ' ' + args + '\n');
var proc = child_process.spawn(cmd, args);
proc.stdout.on('data', function (data) {
console.log('spawn:stdout:\n' + data);
});
proc.stderr.on('data', function (data) {
console.log('spawn:stderr:\n' + data);
});
proc.on('exit', function (code) {
console.log('spawn:child process exited with code ' + code + '\n');
});
}
function fork() {
console.log('fork');
var forked = child_process.fork(__dirname + '/child_process_forked.js');
forked.on('message', function(m) {
console.log('PARENT got message:', m);
if(m === "done") {
forked.kill();
process.exit();
}
});
forked.send({ hello: 'world' });
}
//child_process_forked.js
process.on('message', function(m) {
console.log('CHILD got message:', m);
process.send("done");
});
process.send({ foo: 'bar' });
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment