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