node中全局對象三 --- process

 process模塊用來與當前進程的互動。process其實完整的寫法是global.process

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.stderr:指向標準錯誤
  • process.stdin: 指向標準輸入,用於監聽用戶的輸入。
現在對以上的一些屬性進行講解一下

   (1、process.stdout   process.stderr,在命令窗口中向用戶顯示內容

  
    
    

   顯示結果發現該兩個的區別顏色不一樣,跟console.log和console.error差不多。

   (2、process.stdin ---該方法用於監聽用戶的輸入。

           在webstorm中運行之後在控制檯處出現光標閃爍,說明可以輸入,回車則顯示輸入的內容。
         

     在cmd命令行下運行也是一樣,可以輸入,回車之後顯示輸入的內容,按ctrl+c則可以退出輸入。
     在nodeJs的舊版本中,默認情況下,輸入流是關閉的,要監聽處理輸入流數據,首先要開啓輸入流:process.stdin.resume();
     不過在新版本中不需要這個了。
     我們下面用一個例子來講標準輸入輸出結合起來使用:
    
process.stdin.setEncoding('utf-8');

var a, b;
process.stdout.write("請輸入a的值:");
process.stdin.on('data',function(chunk){
    if(!a){
        a = Number(chunk);

        process.stdout.write("請輸入b的值:");
    }else{
        b = Number(chunk);
        process.stdout.write("a + b = " +(a+b));
    }


});

    根據輸入步驟輸入a , b 的值之後,該段代碼的執行結果爲:

     

     (3: process.argv  這個是以數組的形式來顯示


             
           在cmd下命令下執行結果如下:
           
            
           可以看出輸出的形式是以數組的形式輸出的,0:是node命令的絕對路徑1:是node執行的js文件的絕對路徑,2....(數組的後面主要由執行命令後面跟數據決定)
      

二:process提供的方法

  • process.exit():退出當前進程
  • process.cwd():返回運行當前腳本的工作目錄的路徑
  • process.chdir():改變工作目錄
  • process.nextTick():將一個回調函數放在下次事件循環的頂部
        下面我們對process.cwd()來詳細的講解一下
         在webstorm下,我們發現執行結果和__dirname的執行結果是一樣的,
         但是他們兩個也有區別,__dirname表示代碼js文件所在目錄
          process.cwd()表示執行node命令的時候(cmd命令行下),我們在哪個目錄  current working dir
  

  三:process 方法提供的事件

  •  exit事件 :當前進程退出時,會觸發exit事件
  •  uncaughtException事件 : 當前進程拋出一個沒有被捕捉的意外時,會觸發uncaughtException事件
  •  readable  :有東西可以讀取的時候就會觸發這個事件
  •  SIGINT : 如在cmd命令行下輸入ctrl+C 觸發的退出行爲

        下面我們對一些事件處理進行詳細的講解

        (1、readable 

            
        上圖控制檯中綠色框爲輸入的內容,紅色框內的爲回車之後讀取打印出來的數據。

     

     (2、exit  SIGINT 

               下面我們用一個例子來總體瞭解一下這兩個事件。
               

              這次我們在cmd控制檯處運行,運行之後輸入2回車之後則打印了2(如下圖),祝部分主要是process的stdin屬性起的作用

             
               
            接着我按ctrl+c來進行取消進程,則結果如下圖顯示,首先是ctrl+c觸發了SIGINT事件,所以首先打印了“Program has a signal”;
                                                                                                         然後 process.exit();觸發了exit事件,所以後面跟着打印了"Program will exit"。
             

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章