成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Node.js 全局對象 process

JasonZhang / 2269人閱讀

摘要:是一個(gè)全局變量,對象的屬性。的源碼啟動(dòng)進(jìn)程,評估時(shí)返回函數(shù)失敗。調(diào)用監(jiān)聽器回調(diào)函數(shù)時(shí)會(huì)將的值作為唯一參數(shù)傳入。信號列表詳見標(biāo)準(zhǔn)的信號名,如等。返回一個(gè)對象,描述了進(jìn)程所用的內(nèi)存狀況,單位為字節(jié)。一旦當(dāng)前事件循環(huán)結(jié)束,調(diào)用回調(diào)函數(shù)。

process是一個(gè)全局變量,global對象的屬性。
它的作用是描述當(dāng)前Node.js進(jìn)程狀態(tài)的對象,提供了一個(gè)與操作系統(tǒng)的簡單接口。通常在你寫本地命令程序的時(shí)候,process就會(huì)經(jīng)常用到,下面說說process對象的一些常用的成員方法。

exit : 當(dāng)進(jìn)程準(zhǔn)備退出時(shí)觸發(fā)

process.on("exit", function(code) {
    setTimeout(function(){
        console.log("該代碼不會(huì)執(zhí)行。")
    })
    console.log("退出碼為:" + code)
})
console.log("程序執(zhí)行結(jié)束")

退出狀態(tài)碼
1 Uncaught Fatal Exception
有未捕獲異常,并且沒有被域或 uncaughtException 處理函數(shù)處理。
2 Unused
保留
3 Internal JavaScript Parse Error
JavaScript的源碼啟動(dòng) Node 進(jìn)程時(shí)引起解析錯(cuò)誤。非常罕見,僅會(huì)在開發(fā) Node 時(shí)才會(huì)有。
4 Internal JavaScript Evaluation Failure
JavaScript 的源碼啟動(dòng) Node 進(jìn)程,評估時(shí)返回函數(shù)失敗。非常罕見,僅會(huì)在開發(fā) Node 時(shí)才會(huì)有。
5 Fatal Error
V8 里致命的不可恢復(fù)的錯(cuò)誤。通常會(huì)打印到 stderr ,內(nèi)容為: FATAL ERROR
6 Non-function Internal Exception Handler
未捕獲異常,內(nèi)部異常處理函數(shù)不知為何設(shè)置為on-function,并且不能被調(diào)用。
7 Internal Exception Handler Run-Time Failure
未捕獲的異常, 并且異常處理函數(shù)處理時(shí)自己拋出了異常。例如,如果 process.on("uncaughtException") 或 domain.on("error") 拋出了異常。
8 Unused
保留
9 Invalid Argument
可能是給了未知的參數(shù),或者給的參數(shù)沒有值。
10 Internal JavaScript Run-Time Failure
JavaScript的源碼啟動(dòng) Node 進(jìn)程時(shí)拋出錯(cuò)誤,非常罕見,僅會(huì)在開發(fā) Node 時(shí)才會(huì)有。
12 Invalid Debug Argument
設(shè)置了參數(shù)--debug 和/或 --debug-brk,但是選擇了錯(cuò)誤端口。
128 Signal Exits
如果 Node 接收到致命信號,比如SIGKILL 或 SIGHUP,那么退出代碼就是128 加信號代碼。這是標(biāo)準(zhǔn)的 Unix 做法,退出信號代碼放在高位。

beforeExit : 當(dāng) Node.js 清空其事件循環(huán)并且沒有其他工作要安排時(shí),會(huì)觸發(fā) "beforeExit" 事件。 通常,Node.js 進(jìn)程將在沒有調(diào)度工作時(shí)退出,但是在 "beforeExit" 事件上注冊的監(jiān)聽器可以進(jìn)行異步調(diào)用,從而導(dǎo)致 Node.js 進(jìn)程繼續(xù)。
調(diào)用監(jiān)聽器回調(diào)函數(shù)時(shí)會(huì)將 process.exitCode 的值作為唯一參數(shù)傳入。
對于導(dǎo)致顯式終止的條件,不會(huì)觸發(fā) "beforeExit" 事件,例如調(diào)用 process.exit() 或未捕獲的異常。
除非打算安排額外的工作,否則不應(yīng)將 "beforeExit" 用作 "exit" 事件的替代方案。

process.on("beforeExit", function(code) {
    setTimeout(function(){
        console.log("該代碼會(huì)一直執(zhí)行下去。")
    })
    console.log("退出碼為:" + code)
})
console.log("程序執(zhí)行結(jié)束")

事件上注冊的監(jiān)聽器可以進(jìn)行異步調(diào)用,從而導(dǎo)致 Node.js 進(jìn)程繼續(xù)。這就是這段代碼為什么不會(huì)停止的原因呢。

uncaughtException: 當(dāng)一個(gè)異常冒泡回到事件循環(huán),觸發(fā)這個(gè)事件。如果給異常添加了監(jiān)視器,默認(rèn)當(dāng)操作(打印堆棧信息并推出)就不會(huì)發(fā)生。
我們來寫一個(gè)例子

process.on("uncaughtException",err => {
    console.log(err + "捕獲異常")
})
let a = 1

console.log(b) //打印一個(gè)為定義堆變量b

結(jié)果

Signal事件::當(dāng)進(jìn)程接收到信號時(shí)就觸發(fā)。信號列表詳見標(biāo)準(zhǔn)的 POSIX 信號名,如 SIGINT、SIGUSR1 等。

process屬性

1 stdout
標(biāo)準(zhǔn)輸出流。
2 stderr
標(biāo)準(zhǔn)錯(cuò)誤流。
3 stdin
標(biāo)準(zhǔn)輸入流。
4 argv
argv 屬性返回一個(gè)數(shù)組,由命令行執(zhí)行腳本時(shí)的各個(gè)參數(shù)組成。它的第一個(gè)成員總是node,第二個(gè)成員是腳本文件名,其余成員是腳本文件的參數(shù)。
5 execPath
返回執(zhí)行當(dāng)前腳本的 Node 二進(jìn)制文件的絕對路徑。
6 execArgv
返回一個(gè)數(shù)組,成員是命令行下執(zhí)行腳本時(shí),在Node可執(zhí)行文件與腳本文件之間的命令行參數(shù)。
7 env
返回一個(gè)對象,成員為當(dāng)前 shell 的環(huán)境變量
8 exitCode
進(jìn)程退出時(shí)的代碼,如果進(jìn)程優(yōu)通過 process.exit() 退出,不需要指定退出碼。
9 version
Node 的版本,比如v0.10.18。
10 versions
一個(gè)屬性,包含了 node 的版本和依賴.
11 config
一個(gè)包含用來編譯當(dāng)前 node 執(zhí)行文件的 javascript 配置選項(xiàng)的對象。它與運(yùn)行 ./configure 腳本生成的 "config.gypi" 文件相同。
12 pid
當(dāng)前進(jìn)程的進(jìn)程號。
13 title
進(jìn)程名,默認(rèn)值為"node",可以自定義該值。
14 arch
當(dāng)前 CPU 的架構(gòu):"arm"、"ia32" 或者 "x64"。
15 platform
運(yùn)行程序所在的平臺(tái)系統(tǒng) "darwin", "freebsd", "linux", "sunos" 或 "win32"
16 mainModule
require.main 的備選方法。不同點(diǎn),如果主模塊在運(yùn)行時(shí)改變,require.main可能會(huì)繼續(xù)返回老的模塊??梢哉J(rèn)為,這兩者引用了同一個(gè)模塊。

例子

//輸出到終端
process.stdout.write("Hello World" + "
")

// 通過參數(shù)讀取
process.argv.forEach((val,index,array)=> {
    console.log(index+ ":" + val)
})
// 獲取執(zhí)行路徑
console.log(process.execPath)
// 平臺(tái)信息
console.log(process.platform)


process提供了很多有用的屬性,可以查看api逐個(gè)了解一下。

Process還有很多游泳的方法,便于我們更好的控制系統(tǒng)的交互:
1 abort()
這將導(dǎo)致 node 觸發(fā) abort 事件。會(huì)讓 node 退出并生成一個(gè)核心文件。
2 chdir(directory)
改變當(dāng)前工作進(jìn)程的目錄,如果操作失敗拋出異常。
3 cwd()
返回當(dāng)前進(jìn)程的工作目錄
4 exit([code])
使用指定的 code 結(jié)束進(jìn)程。如果忽略,將會(huì)使用 code 0。
5 getgid()
獲取進(jìn)程的群組標(biāo)識(參見 getgid(2))。獲取到得時(shí)群組的數(shù)字 id,而不是名字。
注意:這個(gè)函數(shù)僅在 POSIX 平臺(tái)上可用(例如,非Windows 和 Android)。
6 setgid(id)
設(shè)置進(jìn)程的群組標(biāo)識(參見 setgid(2))??梢越邮諗?shù)字 ID 或者群組名。如果指定了群組名,會(huì)阻塞等待解析為數(shù)字 ID 。
注意:這個(gè)函數(shù)僅在 POSIX 平臺(tái)上可用(例如,非Windows 和 Android)。
7 getuid()
獲取進(jìn)程的用戶標(biāo)識(參見 getuid(2))。這是數(shù)字的用戶 id,不是用戶名。
注意:這個(gè)函數(shù)僅在 POSIX 平臺(tái)上可用(例如,非Windows 和 Android)。
8 setuid(id)
設(shè)置進(jìn)程的用戶標(biāo)識(參見setuid(2))。接收數(shù)字 ID或字符串名字。果指定了群組名,會(huì)阻塞等待解析為數(shù)字 ID 。
注意:這個(gè)函數(shù)僅在 POSIX 平臺(tái)上可用(例如,非Windows 和 Android)。
9 getgroups()
返回進(jìn)程的群組 iD 數(shù)組。POSIX 系統(tǒng)沒有保證一定有,但是 node.js 保證有。
注意:這個(gè)函數(shù)僅在 POSIX 平臺(tái)上可用(例如,非Windows 和 Android)。
10 setgroups(groups)
設(shè)置進(jìn)程的群組 ID。這是授權(quán)操作,所以你需要有 root 權(quán)限,或者有 CAP_SETGID 能力。
注意:這個(gè)函數(shù)僅在 POSIX 平臺(tái)上可用(例如,非Windows 和 Android)。
11 initgroups(user, extra_group)
讀取 /etc/group ,并初始化群組訪問列表,使用成員所在的所有群組。這是授權(quán)操作,所以你需要有 root 權(quán)限,或者有 CAP_SETGID 能力。
注意:這個(gè)函數(shù)僅在 POSIX 平臺(tái)上可用(例如,非Windows 和 Android)。
12 kill(pid[, signal])
發(fā)送信號給進(jìn)程. pid 是進(jìn)程id,并且 signal 是發(fā)送的信號的字符串描述。信號名是字符串,比如 "SIGINT" 或 "SIGHUP"。如果忽略,信號會(huì)是 "SIGTERM"。
13 memoryUsage()
返回一個(gè)對象,描述了 Node 進(jìn)程所用的內(nèi)存狀況,單位為字節(jié)。
14 nextTick(callback)
一旦當(dāng)前事件循環(huán)結(jié)束,調(diào)用回調(diào)函數(shù)。
15 umask([mask])
設(shè)置或讀取進(jìn)程文件的掩碼。子進(jìn)程從父進(jìn)程繼承掩碼。如果mask 參數(shù)有效,返回舊的掩碼。否則,返回當(dāng)前掩碼。
16 uptime()
返回 Node 已經(jīng)運(yùn)行的秒數(shù)。
17 hrtime()
返回當(dāng)前進(jìn)程的高分辨時(shí)間,形式為 [seconds, nanoseconds]數(shù)組。它是相對于過去的任意事件。該值與日期無關(guān),因此不受時(shí)鐘漂移的影響。主要用途是可以通過精確的時(shí)間間隔,來衡量程序的性能。
你可以將之前的結(jié)果傳遞給當(dāng)前的 process.hrtime() ,會(huì)返回兩者間的時(shí)間差,用來基準(zhǔn)和測量時(shí)間間隔。

// 輸出當(dāng)前目錄
console.log("當(dāng)前目錄: " + process.cwd());

// 輸出當(dāng)前版本
console.log("當(dāng)前版本: " + process.version);

// 輸出內(nèi)存使用情況
console.log(process.memoryUsage());

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/104432.html

相關(guān)文章

  • 通過源碼解析 Node.js 啟動(dòng)時(shí)第一個(gè)執(zhí)行的 js 文件:bootstrap_node.js

    摘要:注很多以前的源碼分析文章中,所寫的第一個(gè)執(zhí)行的文件代碼為,但這個(gè)文件在中已被移除,并被拆解為了等其他下的文件,為正文作為第一段被執(zhí)行的代碼,它的歷史使命免不了就是進(jìn)行一些環(huán)境和全局變量的初始化工作。 大家可能會(huì)好奇,在 Node.js 啟動(dòng)后,第一個(gè)執(zhí)行的 JavaScript 文件會(huì)是哪個(gè)?它具體又會(huì)干些什么事? 一步步來看,翻開 Node.js 的源碼,不難看出,入口文件在 src...

    TNFE 評論0 收藏0
  • Node 基礎(chǔ)學(xué)習(xí)

    摘要:既然這樣,怎么理解中的單線程再捋一捋和的關(guān)系。在線程上,不會(huì)等待操作完成,繼續(xù)執(zhí)行后續(xù)的代碼。這就是單線程異步。在中除了代碼,一切都是并行的由于中主任務(wù)的執(zhí)行是以單線程的方式進(jìn)行,如果程序出錯(cuò)導(dǎo)致崩潰,就會(huì)終止整個(gè)流程。 node是什么 Node.js 是一個(gè)基于 Chrome V8 引擎的 JavaScript 運(yùn)行環(huán)境。 Node.js 使用了一個(gè)事件驅(qū)動(dòng)、非阻塞式 I/O 的模...

    alaege 評論0 收藏0
  • Webpack多城市部署前端差異化配置實(shí)現(xiàn)

    摘要:公司的項(xiàng)目需要多城市部署,不同城市接口地址相關(guān)服務(wù)地址都會(huì)不同同時(shí),還需要實(shí)現(xiàn)控制不同城市部分功能開啟關(guān)閉。所以,我們將不同城市差異化配置單獨(dú)使用一個(gè)配置文件整合,代碼中再通過讀取配置文件來實(shí)現(xiàn)上述需求。 公司的項(xiàng)目需要多城市部署,不同城市接口地址、相關(guān)服務(wù)地址都會(huì)不同;同時(shí),還需要實(shí)現(xiàn)控制不同城市部分功能開啟/關(guān)閉。這樣一來,每次不同城市發(fā)包需要修改的地方就會(huì)比較多且分散,這樣就很容...

    netmou 評論0 收藏0
  • NPM酷庫:vm2,安全的沙箱環(huán)境

    摘要:而標(biāo)準(zhǔn)庫中的是不安全的,用戶腳本可以輕易突破沙箱環(huán)境,獲取主程序的上述代碼在執(zhí)行時(shí),程序在第二行就直接退出,虛擬機(jī)環(huán)境中的代碼逃逸,獲得了主線程的變量,并調(diào)用,造成主程序非正常退出。 NPM酷庫,每天兩分鐘,了解一個(gè)流行NPM庫。 今天我們要了解的庫是 vm2,則是一個(gè)Node.js 官方 vm 庫的替代品,主要解決了安全問題。 不安全的vm 在Node.js官方標(biāo)準(zhǔn)庫中有一個(gè)vm庫,...

    pkhope 評論0 收藏0
  • 后端知識點(diǎn)總結(jié)——NODE.JS(高級)

    摘要:階段是事件循環(huán)的第一階段習(xí)慣上往往都會(huì)設(shè)置數(shù)將回調(diào)函數(shù)添加到事件循環(huán)的階段的隊(duì)列中等待執(zhí)行。 后端知識點(diǎn)總結(jié)——NODE.JS(高級) 1.Node入門: 什么是: 針對網(wǎng)絡(luò)應(yīng)用開發(fā)的平臺(tái)主要特征: 基于Google的JavaScript運(yùn)行時(shí)引擎V8 擴(kuò)展了Node標(biāo)準(zhǔn)類庫: TCP,同步或異步文件管理,HTTP 為什么使用Node: 可以在服務(wù)器端運(yùn)行js: 現(xiàn)有前端團(tuán)隊(duì)可直...

    bovenson 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<