たとえば、次のコード(server.jsという名前)を使用して、ノード(Windowsを使用)で最も基本的なwebServerを実行しています。
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/');
これを子プロセスとして実行したいと思いますが、次のようにして正常に実行しています。
var exec = require('child_process').exec;
var serv = exec('node server.js', function(error, stdout, stderr){
console.log('outputs & errors:' + error, stdout, stderr);
});
ただし、2番目のファイルを実行すると何も受信しません。 「出力とエラー」、「サーバーの実行中...」はありません。ブラウザでlocalhost:1337と入力すると、「hello world」が表示されるので、実行されていることがわかります。その「サーバーが実行中...」をパイプして、それがリッスンしていることを「確認」できるようにする方法はありますか?
var child_process = nw.require('child_process');
var spawn = child_process
//以下はWindowsで、stdoutとstderrをロガーに記録します
var proc = spawn('cmd.exe', ['/S', '/C', script_path]);
proc.stdout.on('data', function(data) {
logger(logtag, 'proc_stdout: ' + data);
});
proc.stderr.on('data', function(data) {
logger(logtag, 'proc_stderr: ' + data);
});
子プロセスが親プロセスのstdioを継承するように指定するだけです。
require('child_process').exec('node server.js', { stdio: 'inherit' });