server.js 686 B

1234567891011121314151617181920212223242526272829303132
  1. var cp = require('child_process'),
  2. worker;
  3. function spawn(server) {
  4. //进行守护,开启IPC通道,双向通信
  5. worker = cp.spawn('node', [ server ], {
  6. stdio: [ 0, 1, 2, 'ipc' ]
  7. });
  8. //监视子进程,当其崩溃时处理
  9. worker.on('exit', function (code) {
  10. if (code !== 0) {
  11. console.log('worker is shut down, restarting...');
  12. spawn(server);//重启服务
  13. };
  14. });
  15. //收到子进程消息
  16. worker.on('message', function (msg) {
  17. console.log(msg);
  18. });
  19. };
  20. function main() {
  21. spawn('./bin/www'); //要守护的进程文件
  22. process.on('SIGTERM', function () {
  23. worker.kill();
  24. process.exit(0);
  25. });
  26. };
  27. main();