nodejs的process是一個全局對象,他提供了一些方法和屬性,node.js官方的API說的很簡單,並無把一些詳細的應用方法和做用寫出來,下面結合我本身的學習,作一下小結吧。
一、Event: 'exit'
這是process的退出事件,官方示例很清楚,當process退出時觸發。即咱們按「ctrl+c」時觸發。
二、Event: 'uncaughtException'
這是process的異常事件,uncaughtException譯爲:未捕獲的異常,能夠利用這個函數來捕獲整個進程運行時的異常,這裏能夠理解爲「使本node.js進程中斷的異常」,由於它的官方示例在異常函數下面的代碼將不會執行。
三、Signal Events
這是process的自定義事件,能夠爲process對象自定義一些事件。這裏官方示例以下:javascript
process.stdin.resume(); //這句話是爲了避免讓控制檯推出 process.on('SIGINT', function () { //SIGINT這個信號是系統默認信號,表明信號中斷,就是ctrl+c console.log('Got SIGINT. Press Control-D to exit.'); });
官方API還說能夠自定義名字來監聽process事件,咱們試一下,代碼以下:java
process.on('SIGUSR1', function (d) { //這裏監聽 SIGUSR1 事件 console.log('Bye-'+d); //這裏將輸出Bye-Bye,而後推出進程 process.exit(0); }); process.emit('SIGUSR1', 'Bye'); //利用emit觸發SIGUSR1,而後傳參數爲Bye
四、process.stdout
官方的示例和代碼很清楚,控制檯輸出流。node
console.log = function (d) { process.stdout.write(d + '\n'); };
五、process.stdin
進程控制檯輸入流,官方代碼看了不解,因而copy到linux系統裏運行一下,就明白了linux
process.stdin.resume(); process.stdin.setEncoding('utf8'); process.stdin.on('data', function (chunk) { process.stdout.write('data: ' + chunk); }); process.stdin.on('end', function () { process.stdout.write('end'); });
輸入的命令和輸出:
$ node test.js
ffff
data: ffff
六、process.argv
這是一個數組,數組裏存放着啓動這個node.js進程各個參數和命令代碼,官方代碼一目瞭然。
七、process.execPath
返回當前node.js進程的啓動命令路徑,也就是node.js安裝目錄下的node命令路徑,是一個絕對路徑
$ node test.js
url: /usr/local/bin/node
八、process.chdir(directory) 和 process.cwd()
process.cwd() 返回當前進程的工做目錄,process.chdir(directory)則改變進程的工做目錄,若是改變失敗將拋出一個異常。代碼見官方API。
舉個例子:
若是一個進程工做在 /red-hat/,如今建立在 "./"目錄下建立一個foo.txt,則會在/red-hat/foo.txt建立,若是改變進程工做目錄爲/red/,則建立foo.txt會在/red/foo.txt建立。注意:node.js的require()不受這個限制,他是以當前文件的。在執行child_process.exec()方法時須要考慮這一點。
九、process.env
返回當前linux系統的信息,我能夠輸入一下代碼來看系統信息
console.log(JSON.stringify(process.env));
十、process.exit(code=0)
kill當前進程,退出本進程。
十一、process.getgid()、process.setgid(id)、process.getuid()、process.setuid(id)
獲取和設置進程的groupid和userid。
十二、process.version、process.versions
node.js的版本和node.js的版本對象
1三、process.installPrefix
返回nodejs的安裝前綴
1四、process.kill(pid, signal='SIGTERM')
發出一個kill信號給指定pid,若是signal不指定,則默認爲「SIGTERM」,官方API特別提醒,這個kill信號只是一個信號,並非linux下的kill命令,並不會真的將那個pid殺死,要想經過kill殺死指定pid,則須要在指定pid監聽「SIGTERM」信號,而後執行process.exit(0);便可。
1五、process.pid、process.title、process.arch、process.platform
進程id,進程名字,進程架構(如:X64),進程平臺(如:linux)
1六、process.memoryUsage()
進程的內存使用狀況,API很清楚。
1七、process.nextTick(callback)
異步執行callback函數,注意,這比 "setTimeout(fn, 0) " 要高效不少。當有一些比較耗時的操做能夠用在process.nextTick(callback) 中,這樣能夠不阻塞整個函數執行。
1八、process.umask([mask])
設置進程的user mask值,什麼是umask值呢?
在linux系統有一個系統命令:$ umask,主要做用是修改系統默認的建立文件和文件夾的權限。
注意這句話:Returns the old mask if mask argument is given, otherwise returns the current mask.
當對process.umask()方法傳遞參數時,則返回舊的umask值,不然返回當前的umask值。
這裏若是咱們設置:
var oldmask, newmask = 0644;
oldmask = process.umask(newmask);
console.log('Changed umask from: ' + oldmask.toString(8) + ' to ' + newmask.toString(8));
輸出022和0644,當umask = 022時,新建的目錄權限是755,新建文件的權限是 644。具體能夠參考linux umask手冊。這裏只是修改由本node.js進程建立的文件和目錄的權限。
1九、process.uptime()
官方給出結果是node進程運行的秒數
20、process.reallyExit(status)
真實推出本進程,不觸發‘exit’事件
2一、process._kill(pid,sig)
用於給指定pid的進程發送指定信號(相似linux下的kill命令)
var pid=process.pid;
process._kill(pid,9);
2二、process.binding(name)
這個方法用於返回指定名稱的內置模塊。例以下面的代碼將打印node_net模塊全部的能夠調用的方法或變量。
var binding=process.binding('net');
console.dir(binding);數組