nodejs的进程process

process是一个全局变量,可以直接调用。
process的属性,如下:
version:包含当前node实例的版本号;
installPrefix:包含安装路径;
platform:列举node运行的操作系统的环境,只会显示内核相关的信息,如:linux2, darwin,而不是“Redhat ES3” ,“Windows 7”,“OSX 10.7”等;
pid:获取进程id;
title:设置进程名称;
execPath:当前node进程的执行路径,如:/usr/local/bin/node;
memoryUsage():node进程内存的使用情况,rss代表ram的使用情况,vsize代表总内存的使用大小,包括ram和swap;
heapTotal,process.heapUsed:分别代表v8引擎内存分配和正在使用的大小。
argv:这是一个数组,数组里存放着启动这个node.js进程各个参数和命令代码;
uptime():包含当前进程运行的时长(秒);
getgid():获取或者设置group id;
setuid():获取或者设计user id;
cwd():当前工作目录;
exit(code=0):kill当前进程;
kill(pid, signal=‘SIGTERM‘):发出一个kill信号给指定pid;
nextTick(callback):异步执行callback函数;
umask([mask]) :设置进程的user mask值;


// 进程退出时执行
process.on('exit', function(code) {
    // 进程退出之后将不再执行事件循环,所有回调函数的代码不会被执行
    setTimeout(function() {
    console.log('This will not run');
    }, 0);
    console.log('About to exit with code:', code);
});

// 注册了uncaughtException事件来捕捉系统异常,否则主事件循环的异常会把整个node进程宕掉
process.on('uncaughtException', function (err) {
  console.log('Caught exception: ' + err);
});

setTimeout(function () {
  console.log('This will still run.');
}, 500);

nonexistentFunc();// 调用未定义的函数nonexistentFunc,所以会抛出异常
console.log('This will not run.');

process.nextTick(function(){console.log('tick')});
输出:

技术分享

事件
exit: 当process退出时触发
uncaughtException: 异常事件,使本node.js进程中断的异常
Signal: 自定义事件
例如:
process.on(‘SIGNAL_ONE‘, function(data){
    console.log(data);
    process.exit(0);
});//监听自定义事件
process.emit(‘SIGNAL_ONE‘, ‘Bye‘);// 触发自定义事件

控制台
process.stdout 控制台输出流
process.stdin 控制台输入流


子进程

child_process模块提供了四个创建子进程的函数,分别是spawn,exec,execFile和fork。
其中spawn是最原始的创建子进程的函数,其他三个都是对spawn不同程度的封装。


spawn只能运行指定的程序,参数需要在列表中给出,相当于execvp系统函数;
而exec可以直接运行复杂的命令。
原型如下:
child_process.spawn(command, [args], [options]);
child_process.exec(command, [options], callback);


exec的实现原理是启动了一个系统shell来解析参数。
fork函数用于直接运行Node.js模块,在父进程与子进程直接建立一个IPC管道,用于父子进程之间的通信。


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。