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...

相關文章
相關標籤/搜索