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管道,用于父子进程之间的通信。

时间: 2024-10-11 00:30:40

nodejs的进程process的相关文章

[转]nodejs中的process模块--child_process.exec

1.process是一个全局进程,你可以直接通过process变量直接访问它. process实现了EventEmitter接口,exit方法会在当进程退出的时候执行.因为进程退出之后将不再执行事件循环,所有只有那些没有回调函数的代码才会被执行. 在下面例子中,setTimeout里面的语句是没有办法执行到的. 1 process.on('exit', function () { 2 setTimeout(function () { 3 console.log('This will not ru

nodejs学习三 process对象

rocess对象,我说的是对象.这个对象包含的方法和属性非常的多,它向我们打开了一个通往Node.js的大门,让我们队Node.js有更多的了解. 你知道安装的Node.js的版本吗? 你知道你的Node安装在上面平台下吗? 你知道你的Node可执行文件的绝对路径吗? 你想得到你env环境变量内容吗? 上面输入的信息你可以更具体点,比如console.log(process.env.OS) 你想得到命令行上的参数吗? 好了,下面我们来写一个js.命名process.js 在命令行上运行它: 我们

java代码中获取进程process id(转)

另一方面,线程ID=进程ID+内部线程对象ID并不成立,    参考: blog.csdn.net/heyetina/article/details/6633901     如何在java代码中获取进程process id, 实现方法如下所示:    参考: rednaxelafx.iteye.com/blog/716918 http://www.cnblogs.com/mumuxinfei/p/3678854.html

进程Process

进程(Process)是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源.进程之间是相对独立的,一个进程无法直接访问另一个进程的数据(除非分布式),一个进程运行的失败也不会影响其他进程的运行,Windows系统就是利用进程把工作划分为多个独立的区域的. 进程可以理解为一个程序的基本边界. 一.Process的常用属性与方法 在System.Diagnostics命名空间当中存在Process类,专门用于管理进程的开始.结束,访问进程中的模块,获取进程中的线程,设定进程的优先级

进程(process)和线程(thread)

来源:阮一峰 进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握. 其实做一个很好的类比,就可以把它们解释地清晰易懂. 1.计算机的核心是CPU,它承担了所有的计算任务.它就像一座工厂,时刻在运行. 2.假定工厂的电力有限,一次只能供给一个车间使用.也就是说,一个车间开工的时候,其他车间都必须停工.背后的含义就是,单个CPU一次只能运行一个任务. 3.进程就好比工厂的车间,它代表CPU所能处理的单个任务.任一时刻,CPU总是运行一个进程,其他进程处于非

python 进程Process模块(40)

进程Process是对各种资源管理的集合,包含对各种资源的调用.内存的管理.网络接口的调用:一个进程Process可以包含多个子进程,启动一个进程的时候会自动创建一个线程,进程里的第一个线程就是主线程(即python __name__ == ‘__main__’): 二.进程Process模块 对于线程操作可以用threading模块,那么对于进程的创建python同样也提供了Process模块,创建进程时需要导入该模块,语法如下: # 导入进程模块 from multiprocessing i

nodejs 守护进程运行

有四种方法: 1.forever forver start  bin/www 2.pm2 pm2 strat bin/www 3.node自身进程保护 nohup node /bin/www  > 1.log & 平时在系统终端中执行一个命令后如果想立即的停止它,您可以同时按下系统组合键"Ctrl+c",这样命令的进程将会立即被终止,是生产工作中比较常用的命令行快捷键之一.或者有些命令在执行时会不断的在屏幕上输出信息,影响到咱们继续输入命令了,便可以在执行命令时在命令最后

你知道进程(Process)是什么吗?

对应用程序来说,进程就像一个大容器.在应用程序被运行后,就相当于将应用程序装进容器里了,你可以往容器里加其他东西(如:应用程序在运行时所需的变量数据.需要引用的DLL文件等),当应用程序被运行两次时,容器里的东西并不会被倒掉,系统会找一个新的进程容器来容纳它.一个进程可以包含若干线程(Thread),线程可以帮助应用程序同时做几件事(比如一个线程向磁盘写入文件,另一个则接收用户的按键操作并及时做出反应,互相不干扰),在程序被运行后中,系统首先要做的就是为该程序进程建立一个默认线程,然后程序可以根

[Android] 进程(Process)和线程(Thread)

当应用的某一个组件(四大组件:Activity,Service,BroadcastReceiver,ContentProvider)启动同时应用没有其他的组件正在运行,也就是说应用的第一个组件启动的时候,安卓系统为这个应用开启一个新的Linux进程,这个进程中包含一个线程.默认情况下,一个应用的所有组件都运行在同一个进程的同一个线程下,这个线程叫主线程.但是不同的组件可以被人为地安排在不同的进程中,同时以可以为一个进程创建额外的线程. 进程 默认情况下,一个应用的所有组件都运行在同一个进程中,而