您的位置:首页 > Web前端 > Node.js

nodeJS入门例子一—全局对象之process

2011-11-22 23:00 585 查看
process

Event: 'exit'

Event: 'uncaughtException'

Signal Events

process.stdout

process.stderr

process.stdin

process.argv

process.execPath

process.chdir(directory)

process.cwd()

process.env

process.exit(code=0)

process.getgid()

process.setgid(id)

process.getuid()

process.setuid(id)

process.version

process.versions

process.installPrefix

process.kill(pid, signal='SIGTERM')

process.pid

process.title

process.arch

process.platform

process.memoryUsage()

process.nextTick(callback)

process.umask([mask])

process.uptime()

process

process
是全局对象并且能够在任何地方访问,它是
EventEmitter
的一个实体 。

Event: 'exit'

function () {}


当process即将退出时发出。这是一个很好用的检查模块(module)状态的常量时间(perform constant time)。当"exit"回调完成后主事件的循环将不再运行,所以定时器不会列入此。


监听exit
例子:

process.on('exit', function () {
  process.nextTick(function () {
   console.log('This will not run');
  });
  console.log('About to exit.');
});

Event: 'uncaughtException'

function (err) { }


当异常冒泡发出时触发 所有的都回归事件循环。如果给这个异常添加一个监听,默认的行为(打印异常并退出)将不再发生。


uncaughtException
异常例子:

process.on('uncaughtException', function (err) {
  console.log('Caught exception: ' + err);
});

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

// Intentionally cause an exception, but don't catch it.
nonexistentFunc();
console.log('This will not run.');
注意:uncaughtException
是一个非常原始的异常处理。在程序中使用 try / catch 将会更好地控制程序流。尤其是服务器端程序被设计成继续运行,
uncaughtException
是一个非常有用并且安全的机制。
[/code]

Signal Events

function () {}


当过程( process)接受到某个信号时触发。参考设置对指定型号处理(2)


Example of listening for
SIGINT
:

// Start reading from stdin so we don't exit.
process.stdin.resume();

process.on('SIGINT', function () {
  console.log('Got SIGINT.  Press Control-D to exit.');
});
一种更简单的发送SIGINT
信号的方法是在终端程序中使用
Control-C

[/code]

process.stdout

一个可写流到标准输出。

A
Writable Stream
to
stdout
.

例子:定义一个
console.log


console.log = function (d) {
  process.stdout.write(d + '\n');
};
process.stderr
process.stdout
在Node中部像其他的数据流,当写入到里面通常将阻塞。将在涉及到规则文件或者TTY文件描述时阻塞。在涉及到管道的情况时,
将与其他数据流没有阻塞。
[/code]

process.stderr

一个可写流到标准错误输出



process.stderr
process.stdout
在Node中部像其他的数据流,当写入到里面通常将阻塞。将在涉及到规则文件或者TTY文件描述时阻塞。在涉及到管道的情况时,
将与其他数据流没有阻塞。[/code]

process.stdin

一个标准输入的可读数据流。标准输入流默认将暂停,所以必须调用
process.stdin.resume()
去从中读取。

一个打开标准输入并监听这两个事件的例子:

process.stdin.resume();
process.stdin.setEncoding('utf8');

process.stdin.on('data', function (chunk) {
  process.stdout.write('data: ' + chunk);
});

process.stdin.on('end', function () {
  process.stdout.write('end');
});

process.argv

一个包含命令行参数的集合,第一个元素将是"node",第二个元素将是JavaScript 文件的名字,下一个与阿苏将是任何复交命令行参数。

// print process.argv
process.argv.forEach(function (val, index, array) {
  console.log(index + ': ' + val);
});

这将会生成:

$ node process-2.js one two=three four
0: node
1: /Users/mjr/work/node/process-2.js
2: one
3: two=three
4: four

process.execPath

这是一个可执行的开始的过程的绝对路径名称。

Example:

/usr/local/bin/node

process.chdir(directory)
#

更换当前过程的工作目录或者抛出异常。

console.log('Starting directory: ' + process.cwd());
try {
  process.chdir('/tmp');
  console.log('New directory: ' + process.cwd());
}
catch (err) {
  console.log('chdir: ' + err);
}

process.cwd()

返回当前过程的工作目录

console.log('Current directory: ' + process.cwd());

process.env

一个包含用户环境的对象,参看 environ(7)

process.exit(code=0)

使用详细的代码结束过程。如果省略,退出用0表示成功。

退出失败用1表示:

process.exit(1);
process.getgid()
获取过程组一致性。这是一个数字类型的group id 不是group 名称。
[/code]

console.log('Current gid: ' + process.getgid());

process.setgid(id)

设置过程group id,这个设置数字类型(numerical)的id或字符串类型(string)group name,如果详细说明了group name,而作为数字类型id时此方法将阻塞。

console.log('Current gid: ' + process.getgid());
try {
  process.setgid(501);
  console.log('New gid: ' + process.getgid());
}
catch (err) {
  console.log('Failed to set gid: ' + err);
}

process.getuid()

获取过程的用户id(puser identity)。这是一个数字类型的userid,不是username。

console.log('Current uid: ' + process.getuid());

process.setuid(id)

设置过程的用户id(user identity),这接受一个数字类型的id或者一个字符串类型的username。如果申明的是username,此方法在将转换数字类型id时阻塞。

console.log('Current uid: ' + process.getuid());
try {
  process.setuid(501);
  console.log('New uid: ' + process.getuid());
}
catch (err) {
  console.log('Failed to set uid: ' + err);
}

process.version

一个暴力node版本(
NODE_VERSION
)的内编译属性

console.log('Version: ' + process.version);

process.versions

一个暴露nodejs版本和其依赖的属性

console.log(process.versions);

Will output:

{ node: '0.4.12',
  v8: '3.1.8.26',
  ares: '1.7.4',
  ev: '4.4',
  openssl: '1.0.0e-fips' }

process.installPrefix

一个暴露NODE_PREFIX的内编译属性。



console.log('Prefix: ' + process.installPrefix);

process.kill(pid, signal='SIGTERM')

发送一个信号到process。pid是过程id,signal是字符串描述的要发送的信号。信号名是字符串格式的,如:'SIGINT' 或者 'SIGUSR1'。如果省略,默认将设置为'SIGINT'

注意:因为函数名为process.kill,是一个真正的信号发送器,如结束系统调用。信号发送可能做一些其他事情不同于结束目标过程。

例子:发送一个信号给自己:

process.on('SIGHUP', function () {
  console.log('Got SIGHUP signal.');
});

setTimeout(function () {
  console.log('Exiting.');
  process.exit(0);
}, 100);

process.kill(process.pid, 'SIGHUP');

process.pid

过程的pid

console.log('This process is pid ' + process.pid);

process.title

设置或者获取过程状态(ps)中的显示标题。

process.arch

系统运行的处理器的架构:“arm”, "ia32", "x64"



console.log('This processor architecture is ' + process.arch);

process.platform

运行的系统平台.
'linux2'
,
'darwin'
,等。

console.log('This platform is ' + process.platform);

process.memoryUsage()

返回字节码为单位的node进程的内存使用情况描述对象

var util = require('util');

console.log(util.inspect(process.memoryUsage()));

将会产生:

{ rss: 4935680,
  heapTotal: 1826816,
  heapUsed: 650472 }

heapTotal
和heapUsed
涉及到 V8的内存使用。

process.nextTick(callback)

下个事件循环中调用这个回调函数。这不是
setTimeout(fn, 0)
的一个别名,这更有效率。

process.nextTick(function () {
  console.log('nextTick callback');
});

process.umask([mask])

设置或读取过程的文件模式遮罩。子过程继承父过程的遮罩。如果遮罩参数设置了将返回旧的遮罩数据,不然返回当前遮罩值。



var oldmask, newmask = 0644;

oldmask = process.umask(newmask);
console.log('Changed umask from: ' + oldmask.toString(8) +
            ' to ' + newmask.toString(8));

process.uptime()

node运行的时间,秒
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: