读书笔记《七天学会NodeJS》,3 - 进程管理

0. 进程
    Node进程主要用来控制处理自身进程运行环境和状态,也可创建新的进程以协同处理某些任务,此时充当调度器作用。
    
1. process全局对象,表示当前NodeJS自身进程的对象。
2. child_process子进程模块,可创建和控制子进程,child_process.spawn创建进程(三个参数分别为可执行文件路径、命令行参数、配置子进程的执行环境与行为),此外exec等API对其进行封装。
3. cluster模块,对child_process模块的进一步封装,可简化多进程服务器的开发,充分利用多核,通过主进程监听端口和分发请求。
4. 其他
    process.argv可获取进程的命令行参数,不过argv[0]和argv[1]分别占据了node可执行文件路径和主模块文件名路径,故而真正的参数argv[2]开始的。
    process.exit退出进程并设置退出错误码。
    process.stdin、process.stdout、process.stderr分别为标准输入流和标准输入流、标准错误流。
    nodejs进程间通信可通过IPC机制实现,即通过spawn函数的第三个参数设置option.stdio选项为ipc,即stdio: [ 0, 1, 2, 'ipc' ],其中0,1,2分别为标准输入、输出、错误流。
    守护进程:一般用于监控工作进程的运行状态,在工作进程不正常退出时重启工作进程,保障工作进程不间断运行,
    守护进程的一种实现方式(daemon.js):
        function spawn(mainModule) {
            var worker = child_process.spawn('node', [ mainModule ]);

            worker.on('exit', function (code) {
            if (code !== 0) {
                spawn(mainModule);
            }
            });
        }
    spawn('worker.js');。
    
    ......