Display running child process' output in nodejs (windows)

child-process, exec, node.js

Solution

Exec will return `STDOUT` and `STDERR` when the child finishes, see `exec`. That's why you do not see any output, when the server starts.

What you want is `fork`, which automatically connects the child process `STDOUT` and `STDERR` to your parent's. This is the preferred way if your child process is a node process.

If you want to use exec you can use the child processe's streams to get your data, e.g.:

child.stdout.pipe(process.stdout);
child.stderr.pipe(process.stderr);

Problem

For example sake, I'm running the most basic webServer in node (I'm using windows) with the following code (named server.js): ``` var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(1337, '127.0.0.1'); console.log('Server running at http://127.0.0.1:1337/'); ``` I would like to run this as a child process, and am successfully doing so with the following: ``` var exec = require('child_process').exec; var serv = exec('node server.js', function(error, stdout, stderr){ console.log('outputs & errors:' + error, stdout, stderr); }); ``` However, I receive nothing once I run the second file. No "outputs & errors", no "Server running at...". If I type localhost:1337 in a browser, I get "hello world" though, so I know it's running. Is there a way to pipe that "server running..." so I can be "sure" it's listening?

Original source

Related problems