官方文檔: 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...