Node.js的process模塊


process模塊用來與當前進程互動,可以通過全局變量process訪問,不必使用require命令加載。它是一個EventEmitter對象的實例。

屬性

process對象提供一系列屬性,用於返回系統信息。

  • process.pid:當前進程的進程號。
  • process.version:Node的版本,比如v0.10.18。
  • process.platform:當前系統平台,比如Linux。
  • process.title:默認值為“node”,可以自定義該值。
  • process.argv:當前進程的命令行參數數組。
  • process.env:指向當前shell的環境變量,比如process.env.HOME。
  • process.execPath:運行當前進程的可執行文件的絕對路徑。
  • process.stdout:指向標准輸出。
  • process.stdin:指向標准輸入。
  • process.stderr:指向標准錯誤。

下面是主要屬性的介紹。

(1)stdout

process.stdout用來控制標准輸出,也就是在命令行窗口向用戶顯示內容。它的write方法等同於console.log。

exports.log = function() {
    process.stdout.write(format.apply(this, arguments) + '\n');
};

(2)argv

process.argv返回命令行腳本的各個參數組成的數組。

先新建一個腳本文件argv.js。

// argv.js
 
console.log("argv: ",process.argv);
console.log("argc: ",process.argc);

在命令行下調用這個腳本,會得到以下結果。

node argv.js a b c
# [ 'node', '/path/to/argv.js', 'a', 'b', 'c' ]

上面代碼表示,argv返回數組的成員依次是命令行的各個部分。要得到真正的參數部分,可以把argv.js改寫成下面這樣。

// argv.js
 
var myArgs = process.argv.slice(2);
console.log(myArgs);

方法

process對象提供以下方法:

  • process.exit():退出當前進程。
  • process.cwd():返回運行當前腳本的工作目錄的路徑。_
  • process.chdir():改變工作目錄。
  • process.nextTick():將一個回調函數放在下次事件循環的頂部。

process.chdir()改變工作目錄的例子。

process.cwd()
# '/home/aaa'
 
process.chdir('/home/bbb')
 
process.cwd()
# '/home/bbb'

process.nextTick()的例子,指定下次事件循環首先運行的任務。

process.nextTick(function () {
    console.log('Next event loop!');
});

上面代碼可以用setTimeout改寫,但是nextTick的效果更高、描述更准確。

setTimeout(function () {
   console.log('Next event loop!');
}, 0)

事件

(1)exit事件

當前進程退出時,會觸發exit事件,可以對該事件指定回調函數。這一個用來定時檢查模塊的狀態的好鈎子(hook)(例如單元測試),當主事件循環在執行完’exit’的回調函數后將不再執行,所以在exit事件中定義的定時器可能不會被加入事件列表.

process.on('exit', function () {
  fs.writeFileSync('/tmp/myfile', 'This MUST be saved on exit.');
});

(2)uncaughtException事件

當前進程拋出一個沒有被捕捉的意外時,會觸發uncaughtException事件。

 process.on('uncaughtException', function (err) {
   console.error('An uncaught error occurred!');
   console.error(err.stack);
 });

內容來源:http://javascript.ruanyifeng.com/nodejs/basic.html#toc22


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM