1.簡介
process()是一個全局內置對象,可以在代碼中的任何位置訪問此對象,這個對象代表我們的node.js代碼宿主的操作系統進程對象。
使用process對象可以截獲進程的異常、退出等事件,也可以獲取進程的當前目錄、環境變量、內存佔用等信息,還可以執行進程退出、工作目錄切換等操作。
下面我們一起來學習一下process對象的一些常用方法。
2.cwd函數的基本用法。
- process.cwd();
3.chdir函數的基本用法。
如果需要改變應用程序目錄,就要使用chdir函數了,它的用法如下:
- process.chdir("目錄");
4.stdout函數的基本用法。
stdout是標準輸出流,它是幹什麼的呢?請下看下面的示例:
- console.log = function(d){
- process.stdout.write(d+'\n');
- }
5.stderr函數的基本用法。
- process.stderr.write(輸入內容);
6.stdin函數的基本用法
stdin是進程的輸入流,我們可以通過註冊事件的方式來獲取輸入的內容,如下:
- process.stdin.on('readable', function() {
- var chunk = process.stdin.read();
- if (chunk !== null) {
- process.stdout.write('data: ' + chunk);
- }
- });
示例中的chunk就是輸入流中的內容。
7.exit函數的基本用法
如果你需要在程序內殺死進程,退出程序,可以使用exit函數,示例如下:
- process.exit(code);
參數code爲退出後返回的代碼,如果省略則默認返回0;
8.監聽進程事件
使用process.on()方法可以監聽進程事件。
exit事件
當進程要退出之前,會觸發exit事件。通過監聽exit事件,我們可就以在進程退出前進行一些清理工作:
- //參數code表示退出碼
- process.on("exit",function(code){
- //進行一些清理工作
- console.log("I am tired...")
- });
- var tick = Date.now();
- console.log(tick);
uncaughtException事件
如果進程發生了未捕捉的異常,會觸發uncaughtException事件。通過監聽這個事件,你可以 讓進程優雅的退出:
- //參數err表示發生的異常
- process.on("uncaughtException",function(err){
- console.log(err);
- });
- //故意拋出一個異常
- throw new Error("我故意的...");
使用process.on()方法可以監聽進程事件。
exit事件
當進程要退出之前,會觸發exit事件。通過監聽exit事件,我們可就以在進程退出前進行一些清理工作:
- //參數code表示退出碼
- process.on("exit",function(code){
- //進行一些清理工作
- console.log("I am tired...")
- });
- var tick = Date.now();
- console.log(tick);
uncaughtException事件
如果進程發生了未捕捉的異常,會觸發uncaughtException事件。通過監聽這個事件,你可以 讓進程優雅的退出:
- //參數err表示發生的異常
- process.on("uncaughtException",function(err){
- console.log(err);
- });
- //故意拋出一個異常
- throw new Error("我故意的...");
exit事件
當進程要退出之前,會觸發exit事件。通過監聽exit事件,我們可就以在進程退出前進行一些清理工作:
- //參數code表示退出碼
- process.on("exit",function(code){
- //進行一些清理工作
- console.log("I am tired...")
- });
- var tick = Date.now();
- console.log(tick);
uncaughtException事件
如果進程發生了未捕捉的異常,會觸發uncaughtException事件。通過監聽這個事件,你可以 讓進程優雅的退出:
- //參數err表示發生的異常
- process.on("uncaughtException",function(err){
- console.log(err);
- });
- //故意拋出一個異常
- throw new Error("我故意的...");
9.設置編碼
在我們的輸入輸出的內容中有中文的時候,可能會亂碼的問題,這是因爲編碼不同造成的,所以在這種情況下需要爲流設置編碼,如下示例:
- process.stdin.setEncoding(編碼);
- process.stdout.setEncoding(編碼);
- process.stderr.setEncoding(編碼);