官方文档: https://nodejs.org/api/proces...html
process
是一个 global
全局对象
提供有关信息,控制当前 Node.js 进程。做为一个对象,它对于 Node.js 应用程序始终是可用的,故无需使用 require()
。前端
process 这个对象是EventEmitter
的实例。node
关于 Process, 咱们须要讨论的是两个概念, ①操做系统的进程, ② Node.js 中的 Process 对象. 操做进程对于服务端而言, 比如 html 之于前端同样基础. 想作服务端编程是不可能绕过 Unix/Linux 的. 在 Linux/Unix/Mac 系统中运行 ps -ef 命令能够看到当前系统中运行的进程. 各个参数以下:linux
获取到在系统中环境变量设置的内容:编程
__dirname:获取到当前文件所在的路径:segmentfault
┌───────────────────────┐ ┌─>│ timers │ │ └──────────┬────────────┘ │ ┌──────────┴────────────┐ │ │ I/O callbacks │ │ └──────────┬────────────┘ │ ┌──────────┴────────────┐ │ │ idle, prepare │ │ └──────────┬────────────┘ ┌───────────────┐ │ ┌──────────┴────────────┐ │ incoming: │ │ │ poll │<─────┤ connections, │ │ └──────────┬────────────┘ │ data, etc. │ │ ┌──────────┴────────────┐ └───────────────┘ │ │ check │ │ └──────────┬────────────┘ │ ┌──────────┴────────────┐ └──┤ close callbacks │ └───────────────────────┘
process.nextTick 并不属于 Event loop 中的某一个阶段, 而是在 Event loop 的每个阶段结束后, 直接执行 nextTickQueue 中插入的 "Tick", 而且直到整个 Queue 处理完. api
具体的api照着文档看架构
在 process 对象上还暴露了 process.stderr, process.stdout 以及 process.stdin 三个标准流, 熟悉 C/C++/Java 的同窗应该对此比较熟悉.异步
console.log 是同步仍是异步?
console.log既不是老是同步的,也不老是异步的。是否为同步取决于连接的是什么流以及操做系统是Windows仍是POSIX:oop
注意: 同步写将会阻塞事件循环直到写完成。 有时可能一瞬间就能写到一个文件,但当系统处于高负载时,管道的接收端可能不会被读取、缓慢的终端或文件系统,由于事件循环被阻塞的足够频繁且足够长的时间,这些可能会给系统性能带来消极的影响。当你向一个交互终端会话写时这可能不是个问题,但当生产日志到进程的输出流时要特别留心。
如何实现一个 console.log?
实现console.log在控制台打印,利用process.stdout将输入流数据输出到输出流(即输出到终端),一个简单的例子输出hello world process.stdout.write('hello world!' + 'n');,如下例子是对console源码解读实现,将Console取名为Logger。
https://www.imooc.com/article...
这里来作个计算器实例:
node.js提供了 os.platform() 或者 process.platform 来检测当前系统
os.platform 或 process.platform 返回 'darwin', 'freebsd', 'linux', 'sunos' or 'win32'
Node.js的进程管理:https://segmentfault.com/a/11...