process模块用来与当前进程互动,可以通过全局变量process访问,不必使用require命令加载。它是一个EventEmitter对象的实例。

属性

process对象提供一系列属性,用于返回系统信息。

  • process.pid:当前进程的进程号。
  • process.version:Node的版本,比如v0.10.18。
  • process.platform:当前系统平台,比如Linux。
  • process.title:默认值为“node”,可以自定义该值。
  • process.argv:当前进程的命令行参数数组。
  • process.env:指向当前shell的环境变量,比如process.env.HOME。
  • process.execPath:运行当前进程的可执行文件的绝对路径。
  • process.stdout:指向标准输出。
  • process.stdin:指向标准输入。
  • process.stderr:指向标准错误。

下面是主要属性的介绍。

(1)stdout

process.stdout用来控制标准输出,也就是在命令行窗口向用户显示内容。它的write方法等同于console.log。

exports.log = function() {
process.stdout.write(format.apply(this, arguments) + '\n');
};

(2)argv

process.argv返回命令行脚本的各个参数组成的数组。

先新建一个脚本文件argv.js。

// argv.js

console.log("argv: ",process.argv);
console.log("argc: ",process.argc);

在命令行下调用这个脚本,会得到以下结果。

node argv.js a b c
# [ 'node', '/path/to/argv.js', 'a', 'b', 'c' ]

上面代码表示,argv返回数组的成员依次是命令行的各个部分。要得到真正的参数部分,可以把argv.js改写成下面这样。

// argv.js

var myArgs = process.argv.slice(2);
console.log(myArgs);

方法

process对象提供以下方法:

  • process.exit():退出当前进程。
  • process.cwd():返回运行当前脚本的工作目录的路径。_
  • process.chdir():改变工作目录。
  • process.nextTick():将一个回调函数放在下次事件循环的顶部。

process.chdir()改变工作目录的例子。

process.cwd()
# '/home/aaa' process.chdir('/home/bbb') process.cwd()
# '/home/bbb'

process.nextTick()的例子,指定下次事件循环首先运行的任务。

process.nextTick(function () {
console.log('Next event loop!');
});

上面代码可以用setTimeout改写,但是nextTick的效果更高、描述更准确。

setTimeout(function () {
console.log('Next event loop!');
}, 0)

事件

(1)exit事件

当前进程退出时,会触发exit事件,可以对该事件指定回调函数。这一个用来定时检查模块的状态的好钩子(hook)(例如单元测试),当主事件循环在执行完’exit’的回调函数后将不再执行,所以在exit事件中定义的定时器可能不会被加入事件列表.

process.on('exit', function () {
fs.writeFileSync('/tmp/myfile', 'This MUST be saved on exit.');
});

(2)uncaughtException事件

当前进程抛出一个没有被捕捉的意外时,会触发uncaughtException事件。

 process.on('uncaughtException', function (err) {
console.error('An uncaught error occurred!');
console.error(err.stack);
});

内容来源:http://javascript.ruanyifeng.com/nodejs/basic.html#toc22

Node.js的process模块的更多相关文章

  1. Node.js之process模块

    注意⚠️:process为nodejs内置对象,不需要实例化,改模块用来与当前进程进行互动,可以通过全局变量process访问,它是一个EventEmitter对象的实例. process对象提供一系 ...

  2. 利用Node.js的Net模块实现一个命令行多人聊天室

    1.net模块基本API 要使用Node.js的net模块实现一个命令行聊天室,就必须先了解NET模块的API使用.NET模块API分为两大类:Server和Socket类.工厂方法. Server类 ...

  3. Node.js入门:模块机制

    CommonJS规范      早在Netscape诞生不久后,JavaScript就一直在探索本地编程的路,Rhino是其代表产物.无奈那时服务端JavaScript走的路均是参考众多服务器端语言来 ...

  4. Node.js的net模块

    net模块提供了一个异步网络包装器,用于TCP网络编程,它包含了创建服务器和客户端的方法 创建TCP服务器 net.createServer方法 创建客户端去连接服务器 net.connect方法 简 ...

  5. node.js中express模块创建服务器和http模块客户端发请求

    首先下载express模块,命令行输入 npm install express 1.node.js中express模块创建服务端 在js代码同文件位置新建一个文件夹(www_root),里面存放网页文 ...

  6. 浅析 Node.js 的 vm 模块以及运行不信任代码

    在一些系统中,我们希望给用户提供插入自定义逻辑的能力,除了 RPC 和 REST 之外,运行客户提供的代码也是比较常用的方法,好处是可以极大地减少在网络上的耗时.JavaScript 是一种非常流行而 ...

  7. Node.js的Formidable模块的使用

    今天总结了下Node.js的Formidable模块的使用,下面做一些简要的说明. 1)     创建Formidable.IncomingForm对象 var form = new formidab ...

  8. node.js中ws模块创建服务端和客户端,网页WebSocket客户端

    首先下载websocket模块,命令行输入 npm install ws 1.node.js中ws模块创建服务端 // 加载node上websocket模块 ws; var ws = require( ...

  9. node.js中net模块创建服务器和客户端(TCP)

    node.js中net模块创建服务器和客户端 1.node.js中net模块创建服务器(net.createServer) // 将net模块 引入进来 var net = require(" ...

随机推荐

  1. 第二节:Maven的运行机制

    Maven 的运行机制分为两个分别是生命周期和插件 首先我们来说说Maven的生命周期 1.1:生命周期是个个阶段组成的 1.2:Maven的生命周期是相互独立的,他们之间没有交集 1.3:阶段是有顺 ...

  2. C#中ROUND函数的问题 解决

    ROUND()是C#中math的一个成员函数.System.Math.Round(),这个函数有四种用法,最长用的是对小数点位数的舍入.但这和现实生活中的“四舍五入”有一定区别,也有别JAVA中Mat ...

  3. git 在windows上 生成ssh公钥

    今天上传代码到服务器时,报如下错误:   上网搜了一下,应该是ssh过期了.我们就来生成新的ssh公钥吧.   1. 打开git bash   2. 输入命令:  ssh-keygen -t rsa ...

  4. The Story of self Parameter in Python, Demystified

      转自:http://www.programiz.com/article/python-self-why If you have been programming in Python (in obj ...

  5. PHP底层的运行机制与原理

    PHP说简单,但是要精通也不是一件简单的事.我们除了会使用之外,还得知道它底层的工作原理. PHP是一种适用于web开发的动态语言.具体点说,就是一个用C语言实现包含大量组件的软件框架.更狭义点看,可 ...

  6. ZOJ 3209 Treasure Map (Dancing Links)

    Treasure Map Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu Submit S ...

  7. ubuntu qt :-1: error cannot find lgl

    安装package "libgl1-mesa-dev": sudo apt-get install libgl1-mesa-dev 参考文献: Qt: can't find -lG ...

  8. 我的jquery之路

    不知不觉jquery已经看完了. 以前不知道jquery是什么,现在依然不是很清晰.或许学习的结果就是这样吧,忘记你所学的.

  9. Features for configuring JSON-to-Java mapping

    Following on/off features are defined in DeserializationConfig.Feature (Jackson 1.x) or Deserializat ...

  10. C#中显/隐式实现接口及其访问方法

    原贴地址: http://www.cnblogs.com/dudu837/archive/2009/12/07/1618663.html 在实现接口的时候,VS提供了两个菜单,一个是"实现接 ...