process对象是一个全局进程变量,提供 Node.js 进程的有关信息以及控制进程。有电脑系统相关信息,自身版本号,一些存储路径等相关信息。
process是EventEmitter类的实例。就是说,可添加全局自定义事件。
拥有的事件:
‘beforExit’事件:当Node清空了事件循环且不再添加额外工作时触发。正常自动无事件可执行自动关闭触发,自己主动调用exit()或者抛出未捕获的异常时不会触发。
‘exit’事件,退出进程时触发,触发方法 ,自然关闭,主动调用exit()方法。回调函数里面只允许有同步方法,异步方法不会执行
‘disconnect’事件,如果node进程是通过IPC通道衍生的,当IPC通道关闭时触发。
‘message’事件,如果node进程是通过IPC通道衍生的,当子进程收到父进程使用childprocess.send()发送的消息时触发。
消息会进行序列化和解析,收到的消息可能与发送的不完全一样。
‘multipleResolves’事件,当promise内方法执行2次及以上就触发该事件,主要用于使用 promise 时追踪错误。
‘rejectionHandled’事件,异步错误监听,监听promise.ecject错误事件。
‘unhandledRejection’事件,同步错误监听
正确使用 'uncaughtException'
事件的方式,是用它在进程结束前执行一些已分配资源(比如文件描述符,句柄等等)的同步清理操作。 触发 'uncaughtException'
事件后,用它来尝试恢复应用正常运行的操作是不安全的。
想让一个已经崩溃的应用正常运行,更可靠的方式应该是启动另外一个进程来监测/探测应用是否出错, 无论 uncaughtException
事件是否被触发,如果监测到应用出错,则恢复或重启应用。
‘unhandledRejection’事件,promise错误监听器。
‘warning’事件,监听警告事件,接收3个参数,错误名字,错误描述,错误存在的堆栈位置,--no-warning可以关闭告警信息,但还是可以用warning监听到警告信息。
‘信号事件’,接收到外部的信号时触发,如信号中断,父进程被杀死,等。
包含的方法和属性:
abort(),会立即结束进程,并生成一个core文件。
chdir(directory):变更Node.js进程的当前工作目录。
cpuUsage():返回一个数组,分别是当前进程用户CPU时间和当前系统CPU时间,单位都是微秒(百万分之一秒)。上一次调用process.cpuUsage()
方法的结果,可以作为参数值传递给此方法,得到的结果是与上一次的差值。
cwd():返回进程的当前工作目录。
dlopen(),动态加载加载一个c++插件。
emitWarning(),方法可用于发出定制的或应用特定的进程警告,可以用监听warning事件来接收警告。作为最佳实践,警告应该在每个进程中最多发出一次。
exit():结束当前进程。
getegid():返回Node.js进程的有效数字标记的组身份,这个函数只在POSIX平台有效(在Windows或Android平台无效)。geteuid,getgid,getgroups,getuid
hasUncaughtExceptionCaptureCallback():指示是否使用设置回调
hrtime([time]):返回的时间,都是相对于过去某一时刻的值,与一天中的时钟时间没有关系,因此不受制于时钟偏差。 此方法最主要的作用是衡量间隔操作的性能.
返回当前时间以[seconds, nanoseconds]
tuple Array表示的高精度解析值, nanoseconds
是当前时间无法使用秒的精度表示的剩余部分。
hrtime.bigint():hrtime([time])的整型版本,
kill(pid[, signal]):它其实只是发送信号。
memoryUsage():返回node进程的内存使用情况 heapTotal
和 heapUsed
代表V8的内存使用情况。 external
代表V8管理的,绑定到Javascript的C++对象的内存使用情况。 rss
, 驻留集大小, 是给这个进程分配了多少物理内存(占总分配内存的一部分) 这些物理内存中包含堆,栈,和代码段。对象,字符串,闭包等存于堆内存。 变量存于栈内存。 实际的JavaScript源代码存于代码段内存。
nextTick(callback[, ...args]):方法将 callback
添加到"next tick 队列"。 一旦当前事件轮询队列的任务全部完成,在next tick队列中的所有callbacks会被依次调用。
这种方式不是setTimeout(fn, 0)
的别名。它更加有效率。事件轮询随后的ticks 调用,会在任何I/O事件(包括定时器)之前运行。
send():用来给父进程发送消息,不存在则是udefined。
umask([mask]):方法用于返回或设置Node.js进程的默认创建文件的权限掩码。子进程从父进程继承这个掩码。 不传参数时,默认返回当前掩码,如果传递了参数,创建文件掩码就被设置为参数值,并且返回之前的掩码。
uptime():法返回当前 Node.js 进程运行时间秒长
arch:返回一个CPU架构的字符串,64位或32位
argv:返回一个数组,第一个表示,当前node文件所在的绝对路径,第二个参数表示当前执行js文件的绝对路径
argv0:argv[0]的缩写,返回Node所在文件的绝对路径。
execPath:返回Node所在文件的绝对路径。
config:返回一个js对象,描述了用于编译当前Node.js执行程序时涉及的配置项信息。
debugPort:debugger 调试器使用的端口。
env:返回一个环境信息对象,返回用户的环境信息。可增加自定义环境,比如常见的生产测试环境等。新增属性只接收字符串,不是字符串会自动转换。不区分大小写。
execArgv:返回当Node.js进程被启动时,Node.js特定的命令行选项,接收特定命令选项参数。
exitCode:当进程正常结束,或通过process.exit()
结束但未传递参数时,此数值标识进程结束的状态码。给process.exit(code)
指定一个状态码,会覆盖process.exitCode
的原有值。
mainModule:属性提供了一种获取require.main
的替代方式。
pid:返回进程的PID。
ppid:返回父进程的PID
platform:返回当前电脑的操作系统平台。
release:前发布相关的元数据对象,包括源代码和源代码头文件 tarball的URLs。
title:返回运行器的名字。
version:返回node版本号。
versions:返回一个对象,此对象列出了Node.js和其依赖的版本信息。
stderr:返回连接到stderr
(fd 2
)的流。 它是一个net.Socket
(它是一个Duplex流),
stdin:返回连接到 stdin
(fd 0
) 的流。 如果 fd 0
指向文件,则返回可读流,否则返回 net.Socket
(也就是 Duplex 流)。
stdout:返回连接到 stdout
(fd 1
) 的流。 如果 fd 1
指向文件,则返回可写流,否则返回 net.Socket
(也就是 Duplex 流)。
channel:如果该进程是通过IPC通道创建的,则保存IPC channel的引用,如不存在则是undefined 。
connected:如果Node.js进程是由IPC channel方式创建的,只要IPC channel保持连接就会返回true,被中断链接后返回false。
disconnect():如果Node.js进程是由IPC channel方式创建的,调用此方法会关闭链接。否则返回undefined