Node学习记录: process

官方文档: https://nodejs.org/api/proces...html

process是一个 global全局对象
提供有关信息,控制当前 Node.js 进程。做为一个对象,它对于 Node.js 应用程序始终是可用的,故无需使用 require()前端

process 这个对象是EventEmitter的实例。node

常见api

关于 Process, 咱们须要讨论的是两个概念, ①操做系统的进程, ② Node.js 中的 Process 对象. 操做进程对于服务端而言, 比如 html 之于前端同样基础. 想作服务端编程是不可能绕过 Unix/Linux 的. 在 Linux/Unix/Mac 系统中运行 ps -ef 命令能够看到当前系统中运行的进程. 各个参数以下:linux

clipboard.png

clipboard.png

process.env.NODE_PATH

获取到在系统中环境变量设置的内容:编程

图片描述
图片描述
__dirname:获取到当前文件所在的路径:segmentfault

process.nextTick

图片描述

图片描述

┌───────────────────────┐
┌─>│        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

注意: 同步写将会阻塞事件循环直到写完成。 有时可能一瞬间就能写到一个文件,但当系统处于高负载时,管道的接收端可能不会被读取、缓慢的终端或文件系统,由于事件循环被阻塞的足够频繁且足够长的时间,这些可能会给系统性能带来消极的影响。当你向一个交互终端会话写时这可能不是个问题,但当生产日志到进程的输出流时要特别留心。

  • 文件(Files): Windows和POSIX平台下都是同步
  • 终端(TTYs): 在Windows平台下同步,在POSIX平台下异步
  • 管道(Pipes): 在Windows平台下同步,在POSIX平台下异步
如何实现一个 console.log?

实现console.log在控制台打印,利用process.stdout将输入流数据输出到输出流(即输出到终端),一个简单的例子输出hello world process.stdout.write('hello world!' + 'n');,如下例子是对console源码解读实现,将Console取名为Logger。
https://www.imooc.com/article...

A note on process I/O

图片描述图片描述

这里来作个计算器实例:

图片描述

跨系统

node.js提供了 os.platform() 或者 process.platform 来检测当前系统

os.platform 或 process.platform  返回
 'darwin', 'freebsd', 'linux', 'sunos' or 'win32'

图片描述

多进程架构

jin

参考:

Node.js的进程管理:https://segmentfault.com/a/11...

相关文章
相关标签/搜索