node.js(API解讀) - process

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);
數組

相關文章
相關標籤/搜索