程序员人生 网站导航

nodejs的进程process

栏目:综合技术时间:2015-08-17 08:28:20

process是1个全局变量,可以直接调用。
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:这是1个数组,数组里寄存着启动这个node.js进程各个参数和命令代码;
uptime():包括当前进程运行的时长(秒);
getgid():获得或设置group id;
setuid():获得或设计user id;
cwd():当前工作目录;
exit(code=0):kill当前进程;
kill(pid, signal='SIGTERM'):发出1个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模块提供了4个创建子进程的函数,分别是spawn,exec,execFile和fork。
其中spawn是最原始的创建子进程的函数,其他3个都是对spawn不同程度的封装。


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


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


------分隔线----------------------------
------分隔线----------------------------

最新技术推荐