node總結之全域性物件瞭解下(二)
阿新 • • 發佈:2018-11-02
咱們接著上篇文章來看,process這個全域性變數,它是global物件的一個屬性,用於描述當前Node.js 程序狀態的物件,提供了一個與作業系統的簡單介面。通常在我們寫本地命令列程式的時候,少不了要 和它打交道。咱們來看下 process 物件的一些最常用的成員方法:
序號 | 事件 & 描述 |
---|---|
1 | exit 當程序準備退出時觸發。 |
2 | beforeExit 當 node 清空事件迴圈,並且沒有其他安排時觸發這個事件。通常來說,當沒有程序安排時 node 退出,但是 'beforeExit' 的監聽器可以非同步呼叫,這樣 node 就會繼續執行。 |
3 | uncaughtException 當一個異常冒泡回到事件迴圈,觸發這個事件。如果給異常添加了監視器,預設的操作(列印堆疊跟蹤資訊並退出)就不會發生。 |
4 | Signal 事件 當程序接收到訊號時就觸發。訊號列表詳見標準的 POSIX 訊號名,如 SIGINT、SIGUSR1 等。 |
來看例項:
process.on('exit', function(code) { // 以下程式碼永遠不會執行 setTimeout(function() { console.log("該程式碼不會執行"); }, 0); console.log('退出碼為:', code); }); console.log("程式執行結束");
咱們再來看退出狀態碼:
狀態碼 | 名稱 & 描述 |
---|---|
1 | Uncaught Fatal Exception 有未捕獲異常,並且沒有被域或 uncaughtException 處理函式處理。 |
2 | Unused 保留 |
3 | Internal JavaScript Parse Error JavaScript的原始碼啟動 Node 程序時引起解析錯誤。非常罕見,僅會在開發 Node 時才會有。 |
4 | Internal JavaScript Evaluation Failure JavaScript 的原始碼啟動 Node 程序,評估時返回函式失敗。非常罕見,僅會在開發 Node 時才會有。 |
5 | Fatal Error V8 裡致命的不可恢復的錯誤。通常會列印到 stderr ,內容為: FATAL ERROR |
6 | Non-function Internal Exception Handler 未捕獲異常,內部異常處理函式不知為何設定為on-function,並且不能被呼叫。 |
7 | Internal Exception Handler Run-Time Failure 未捕獲的異常, 並且異常處理函式處理時自己丟擲了異常。例如,如果 process.on('uncaughtException') 或 domain.on('error') 丟擲了異常。 |
8 | Unused 保留 |
9 | Invalid Argument 可能是給了未知的引數,或者給的引數沒有值。 |
10 | Internal JavaScript Run-Time Failure JavaScript的原始碼啟動 Node 程序時丟擲錯誤,非常罕見,僅會在開發 Node 時才會有。 |
12 | Invalid Debug Argument 設定了引數--debug 和/或 --debug-brk,但是選擇了錯誤埠。 |
128 | Signal Exits 如果 Node 接收到致命訊號,比如SIGKILL 或 SIGHUP,那麼退出程式碼就是128 加訊號程式碼。這是標準的 Unix 做法,退出訊號程式碼放在高位。 |
之後我們來看process的各種屬性:
序號. | 屬性 & 描述 |
---|---|
1 | stdout 標準輸出流。 |
2 | stderr 標準錯誤流。 |
3 | stdin 標準輸入流。 |
4 | argv argv 屬性返回一個數組,由命令列執行指令碼時的各個引數組成。它的第一個成員總是node,第二個成員是指令碼檔名,其餘成員是指令碼檔案的引數。 |
5 | execPath 返回執行當前指令碼的 Node 二進位制檔案的絕對路徑。 |
6 | execArgv 返回一個數組,成員是命令列下執行指令碼時,在Node可執行檔案與指令碼檔案之間的命令列引數。 |
7 | env 返回一個物件,成員為當前 shell 的環境變數 |
8 | exitCode 程序退出時的程式碼,如果程序優通過 process.exit() 退出,不需要指定退出碼。 |
9 | version Node 的版本,比如v0.10.18。 |
10 | versions 一個屬性,包含了 node 的版本和依賴. |
11 | config 一個包含用來編譯當前 node 執行檔案的 javascript 配置選項的物件。它與執行 ./configure 指令碼生成的 "config.gypi" 檔案相同。 |
12 | pid 當前程序的程序號。 |
13 | title 程序名,預設值為"node",可以自定義該值。 |
14 | arch 當前 CPU 的架構:'arm'、'ia32' 或者 'x64'。 |
15 | platform 執行程式所在的平臺系統 'darwin', 'freebsd', 'linux', 'sunos' 或 'win32' |
16 | mainModule require.main 的備選方法。不同點,如果主模組在執行時改變,require.main可能會繼續返回老的模組。可以認為,這兩者引用了同一個模組。 |
例項如下:
// 輸出到終端
process.stdout.write("Hello World!" + "\n");
// 通過引數讀取
process.argv.forEach(function(val, index, array) {
console.log(index + ': ' + val);
});
// 獲取執行路徑
console.log(process.execPath);
// 平臺資訊
console.log(process.platform);
完事就是Process的一些方法:
序號 | 方法 & 描述 |
---|---|
1 | abort() 這將導致 node 觸發 abort 事件。會讓 node 退出並生成一個核心檔案。 |
2 | chdir(directory) 改變當前工作程序的目錄,如果操作失敗丟擲異常。 |
3 | cwd() 返回當前程序的工作目錄 |
4 | exit([code]) 使用指定的 code 結束程序。如果忽略,將會使用 code 0。 |
5 | getgid() 獲取程序的群組標識(參見 getgid(2))。獲取到得時群組的數字 id,而不是名字。 注意:這個函式僅在 POSIX 平臺上可用(例如,非Windows 和 Android)。 |
6 | setgid(id) 設定程序的群組標識(參見 setgid(2))。可以接收數字 ID 或者群組名。如果指定了群組名,會阻塞等待解析為數字 ID 。 注意:這個函式僅在 POSIX 平臺上可用(例如,非Windows 和 Android)。 |
7 | getuid() 獲取程序的使用者標識(參見 getuid(2))。這是數字的使用者 id,不是使用者名稱。 注意:這個函式僅在 POSIX 平臺上可用(例如,非Windows 和 Android)。 |
8 | setuid(id) 設定程序的使用者標識(參見setuid(2))。接收數字 ID或字串名字。果指定了群組名,會阻塞等待解析為數字 ID 。 注意:這個函式僅在 POSIX 平臺上可用(例如,非Windows 和 Android)。 |
9 | getgroups() 返回程序的群組 iD 陣列。POSIX 系統沒有保證一定有,但是 node.js 保證有。 注意:這個函式僅在 POSIX 平臺上可用(例如,非Windows 和 Android)。 |
10 | setgroups(groups) 設定程序的群組 ID。這是授權操作,所以你需要有 root 許可權,或者有 CAP_SETGID 能力。 注意:這個函式僅在 POSIX 平臺上可用(例如,非Windows 和 Android)。 |
11 | initgroups(user, extra_group) 讀取 /etc/group ,並初始化群組訪問列表,使用成員所在的所有群組。這是授權操作,所以你需要有 root 許可權,或者有 CAP_SETGID 能力。 注意:這個函式僅在 POSIX 平臺上可用(例如,非Windows 和 Android)。 |
12 | kill(pid[, signal]) 傳送訊號給程序. pid 是程序id,並且 signal 是傳送的訊號的字串描述。訊號名是字串,比如 'SIGINT' 或 'SIGHUP'。如果忽略,訊號會是 'SIGTERM'。 |
13 | memoryUsage() 返回一個物件,描述了 Node 程序所用的記憶體狀況,單位為位元組。 |
14 | nextTick(callback) 一旦當前事件迴圈結束,呼叫回撥函式。 |
15 | umask([mask]) 設定或讀取程序檔案的掩碼。子程序從父程序繼承掩碼。如果mask 引數有效,返回舊的掩碼。否則,返回當前掩碼。 |
16 | uptime() 返回 Node 已經執行的秒數。 |
17 | hrtime() 返回當前程序的高分辨時間,形式為 [seconds, nanoseconds]陣列。它是相對於過去的任意事件。該值與日期無關,因此不受時鐘漂移的影響。主要用途是可以通過精確的時間間隔,來衡量程式的效能。 你可以將之前的結果傳遞給當前的 process.hrtime() ,會返回兩者間的時間差,用來基準和測量時間間隔。 |
例項如下:
// 輸出當前目錄
console.log('當前目錄: ' + process.cwd());
// 輸出當前版本
console.log('當前版本: ' + process.version);
// 輸出記憶體使用情況
console.log(process.memoryUsage());
好啦,本次記錄就到這裡了。
如果感覺不錯的話,請多多點贊支援哦。。。