Node.js 全局对象 process

process是一个全局变量,global对象的属性。
它的作用是形貌当前Node.js历程状态的对象,供应了一个与操纵体系的简朴接口。一般在你写当地敕令顺序的时刻,process就会常经常运用到,下面说说process对象的一些经常运用的成员要领。

exit : 当历程预备退出时触发

process.on('exit', function(code) {
    setTimeout(function(){
        console.log('该代码不会实行。')
    })
    console.log('退出码为:' + code)
})
console.log('顺序实行完毕')

《Node.js 全局对象 process》

退出状态码
1 Uncaught Fatal Exception
有未捕捉异常,而且没有被域或 uncaughtException 处置惩罚函数处置惩罚。
2 Unused
保存
3 Internal JavaScript Parse Error
JavaScript的源码启动 Node 历程时引发剖析毛病。异常稀有,仅会在开辟 Node 时才会有。
4 Internal JavaScript Evaluation Failure
JavaScript 的源码启动 Node 历程,评价时返回函数失利。异常稀有,仅会在开辟 Node 时才会有。
5 Fatal Error
V8 里致命的不可恢复的毛病。一般会打印到 stderr ,内容为: FATAL ERROR
6 Non-function Internal Exception Handler
未捕捉异常,内部异常处置惩罚函数不知为什么设置为on-function,而且不能被挪用。
7 Internal Exception Handler Run-Time Failure
未捕捉的异常, 而且异常处置惩罚函数处置惩罚时本身抛出了异常。比方,假如 process.on(‘uncaughtException’) 或 domain.on(‘error’) 抛出了异常。
8 Unused
保存
9 Invalid Argument
多是给了未知的参数,或许给的参数没有值。
10 Internal JavaScript Run-Time Failure
JavaScript的源码启动 Node 历程时抛出毛病,异常稀有,仅会在开辟 Node 时才会有。
12 Invalid Debug Argument
设置了参数–debug 和/或 –debug-brk,然则挑选了毛病端口。
128 Signal Exits
假如 Node 吸收到致命信号,比方SIGKILL 或 SIGHUP,那末退出代码就是128 加信号代码。这是规范的 Unix 做法,退出信号代码放在高位。

beforeExit : 当 Node.js 清空其事宜轮回而且没有其他事情要部署时,会触发 ‘beforeExit’ 事宜。 一般,Node.js 历程将在没有调理事情时退出,然则在 ‘beforeExit’ 事宜上注册的监听器能够举行异步挪用,从而致使 Node.js 历程继续。
挪用监听器回调函数时会将 process.exitCode 的值作为唯一参数传入。
关于致使显式住手的前提,不会触发 ‘beforeExit’ 事宜,比方挪用 process.exit() 或未捕捉的异常。
除非盘算部署分外的事情,不然不应将 ‘beforeExit’ 用作 ‘exit’ 事宜的替换计划。

process.on('beforeExit', function(code) {
    setTimeout(function(){
        console.log('该代码会一向实行下去。')
    })
    console.log('退出码为:' + code)
})
console.log('顺序实行完毕')

事宜上注册的监听器能够举行异步挪用,从而致使 Node.js 历程继续。这就是这段代码为什么不会住手的缘由呢。

uncaughtException: 当一个异常冒泡回到事宜轮回,触发这个事宜。假如给异常添加了监视器,默许当操纵(打印客栈信息并推出)就不会发作。
我们来写一个例子

process.on('uncaughtException',err => {
    console.log(err + '捕捉异常')
})
let a = 1

console.log(b) //打印一个为定义堆变量b

效果

《Node.js 全局对象 process》

Signal事宜::当历程吸收到信号时就触发。信号列表详见规范的 POSIX 信号名,如 SIGINT、SIGUSR1 等。

process属性

1 stdout
规范输出流。
2 stderr
规范毛病流。
3 stdin
规范输入流。
4 argv
argv 属性返回一个数组,由敕令行实行剧本时的各个参数构成。它的第一个成员老是node,第二个成员是剧本文件名,其他成员是剧本文件的参数。
5 execPath
返回实行当前剧本的 Node 二进制文件的绝对途径。
6 execArgv
返回一个数组,成员是敕令行下实行剧本时,在Node可实行文件与剧本文件之间的敕令行参数。
7 env
返回一个对象,成员为当前 shell 的环境变量
8 exitCode
历程退出时的代码,假如历程优经由过程 process.exit() 退出,不须要指定退出码。
9 version
Node 的版本,比方v0.10.18。
10 versions
一个属性,包括了 node 的版本和依靠.
11 config
一个包括用来编译当前 node 实行文件的 javascript 设置选项的对象。它与运转 ./configure 剧本天生的 “config.gypi” 文件雷同。
12 pid
当前历程的历程号。
13 title
历程名,默许值为”node”,能够自定义该值。
14 arch
当前 CPU 的架构:’arm’、’ia32′ 或许 ‘x64’。
15 platform
运转顺序地点的平台体系 ‘darwin’, ‘freebsd’, ‘linux’, ‘sunos’ 或 ‘win32’
16 mainModule
require.main 的备选要领。不同点,假如主模块在运转时转变,require.main可能会继续返回老的模块。能够以为,这二者引用了同一个模块。

例子

//输出到终端
process.stdout.write('Hello World' + '\n')

// 经由过程参数读取
process.argv.forEach((val,index,array)=> {
    console.log(index+ ':' + val)
})
// 猎取实行途径
console.log(process.execPath)
// 平台信息
console.log(process.platform)

《Node.js 全局对象 process》
process供应了许多有用的属性,能够检察api逐一相识一下。

Process另有许多泅水的要领,便于我们更好的控制体系的交互:
1 abort()
这将致使 node 触发 abort 事宜。会让 node 退出并天生一个中心文件。
2 chdir(directory)
转变当前事情历程的目次,假如操纵失利抛出异常。
3 cwd()
返回当前历程的事情目次
4 exit(

)
运用指定的 code 完毕历程。假如疏忽,将会运用 code 0。
5 getgid()
猎取历程的群组标识(拜见 getgid(2))。猎取到得时群组的数字 id,而不是名字。
注重:这个函数仅在 POSIX 平台上可用(比方,非Windows 和 Android)。
6 setgid(id)
设置历程的群组标识(拜见 setgid(2))。能够吸收数字 ID 或许群组名。假如指定了群组名,会壅塞守候剖析为数字 ID 。
注重:这个函数仅在 POSIX 平台上可用(比方,非Windows 和 Android)。
7 getuid()
猎取历程的用户标识(拜见 getuid(2))。这是数字的用户 id,不是用户名。
注重:这个函数仅在 POSIX 平台上可用(比方,非Windows 和 Android)。
8 setuid(id)
设置历程的用户标识(拜见setuid(2))。吸收数字 ID或字符串名字。果指定了群组名,会壅塞守候剖析为数字 ID 。
注重:这个函数仅在 POSIX 平台上可用(比方,非Windows 和 Android)。
9 getgroups()
返回历程的群组 iD 数组。POSIX 体系没有保证一定有,然则 node.js 保证有。
注重:这个函数仅在 POSIX 平台上可用(比方,非Windows 和 Android)。
10 setgroups(groups)
设置历程的群组 ID。这是受权操纵,所以你须要有 root 权限,或许有 CAP_SETGID 才能。
注重:这个函数仅在 POSIX 平台上可用(比方,非Windows 和 Android)。
11 initgroups(user, extra_group)
读取 /etc/group ,并初始化群组接见列表,运用成员地点的一切群组。这是受权操纵,所以你须要有 root 权限,或许有 CAP_SETGID 才能。
注重:这个函数仅在 POSIX 平台上可用(比方,非Windows 和 Android)。
12 kill(pid[, signal])
发送信号给历程. pid 是历程id,而且 signal 是发送的信号的字符串形貌。信号名是字符串,比方 ‘SIGINT’ 或 ‘SIGHUP’。假如疏忽,信号会是 ‘SIGTERM’。
13 memoryUsage()
返回一个对象,形貌了 Node 历程所用的内存状态,单元为字节。
14 nextTick(callback)
一旦当前事宜轮回完毕,挪用回调函数。
15 umask([mask])
设置或读取历程文件的掩码。子历程从父历程继续掩码。假如mask 参数有用,返回旧的掩码。不然,返回当前掩码。
16 uptime()
返回 Node 已运转的秒数。
17 hrtime()
返回当前历程的高分辨时候,情势为 [seconds, nanoseconds]数组。它是相关于过去的恣意事宜。该值与日期无关,因而不受时钟漂移的影响。主要用途是能够经由过程准确的时候距离,来权衡顺序的机能。
你能够将之前的效果传递给当前的 process.hrtime() ,会返回二者间的时候差,用来基准和丈量时候距离。

// 输出当前目次
console.log('当前目次: ' + process.cwd());

// 输出当前版本
console.log('当前版本: ' + process.version);

// 输出内存运用情况
console.log(process.memoryUsage());

《Node.js 全局对象 process》

    原文作者:ˉˉˉ以默轩然
    原文地址: https://segmentfault.com/a/1190000019399405
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞