Module 基礎模塊

模塊process

進程處理模塊,用以管理當前進程的資源

引用方法:

1
var process = require('process');

進程事件

process 模塊對像是 EventEmitter 的實例,可以通過註冊事件監聽器響應進程級別的事件。

beforeExit 事件

當fibjs 的任務已經為空,並且沒有額外的工作被添加進來,事件 beforeExit

1
process.on('beforeExit', exitCode => {});

正常情況下,如果沒有額外的工作被添加到任務隊列,fibjs 進程會結束。但是如果 beforeExit

process.exitCode作為唯一的參數值傳遞給 如果進程由於顯式的原因而將要終止,例如直接調用beforeExitprocess.exit或拋出未捕獲的異常,beforeExit

exit 事件

當fibjs 退出時,事件 exitexit

1
process.on('exit', exitCode => {});

exit 事件監聽器的回調函數,只有一個入參,這個參數的值可以是 process.exitCode 的屬性值,或者是調用 process.exit方法時傳入的 exitCode

Signal 事件

當fibjs 進程接收到一個信號時,會觸發信號事件,目前支持的信號有SIGINT 和SIGTERM。每個事件名稱,以信號名稱的大寫表示(比如事件'SIGINT' 對應信號SIGINT)。

信號事件不同於其它進程事件,信號事件是搶占的,當信號發生時,無論當前在 io操作,還是JavaScript 運算,都會盡快觸發相應事件。比如你可以用下面的代碼,中斷當前應用,並輸出運行狀態:

1 2 3 4 5 6
var coroutine = require('coroutine'); process.on('SIGINT', () => { coroutine.fibers.forEach(f => console.error("Fiber %d:\n%s", f.id, f.stack)); process.exit(); });

信號名稱及其意義如下:

  • SIGINT:在終端運行時,可以被所有平台支持,通常可以通過CTRL+C 觸發。
  • SIGTERM:當進程被kill 時觸發此信號。Windows 下不支持。

靜態函數

umask

改變當前的umask,Windows 不支持此方法

1
static Integer process.umask(Integer mask);

調用參數:

  • mask: Integer, 指定新的掩碼

返回結果:

  • Integer, 返回之前的mask

改變當前的umask,Windows 不支持此方法

1
static Integer process.umask(String mask);

調用參數:

  • mask: String, 指定新的掩碼, 字符串類型八進制(eg: "0664")

返回結果:

  • Integer, 返回之前的mask

返回當前的umask,Windows 不支持此方法

1
static Integer process.umask();

返回結果:

  • Integer, 返回當前的mask 值

hrtime

返回系統高精度時間,此時間與當前時間無關,僅用於高精度計時

1
static Array process.hrtime(Array diff = []);

調用參數:

  • diff: Array, 用於比較的初始時間

返回結果:

  • Array, 返回計時時間,格式為[seconds, nanoseconds]

exit

退出當前進程,並返回exitCode 作為進程結果

1
static process.exit();

退出當前進程,並返回結果

1
static process.exit(Integer code);

調用參數:

  • code: Integer, 返回進程結果

cwd

返回操作系統當前工作路徑

1
static String process.cwd();

返回結果:

  • String, 返回當前系統路徑

chdir

修改操作系統當前工作路徑

1
static process.chdir(String directory);

調用參數:

  • directory: String, 指定設定的新路徑

uptime

查詢運行環境運行時間,以秒為單位

1
static Number process.uptime();

返回結果:

  • Number, 返回表示時間的數值

cpuUsage

查詢當前進程在用戶和系統代碼中花費的時間,其值為微秒值(百萬分之一秒)

1
static Object process.cpuUsage(Object previousValue = {});

調用參數:

  • previousValue: Object, 指定上一次查詢的時間

返回結果:

  • Object, 返回包含時間報告

內存報告生成類似以下結果:

1 2 3 4
{ "user": 132379, "system": 50507 }

其中:

  • user 返回進程在用戶代碼中花費的時間
  • system 返回進程在系統代碼中花費的時間

memoryUsage

查詢當前進程內存使用報告

1
static Object process.memoryUsage();

返回結果:

  • Object, 返回包含內存報告

內存報告生成類似以下結果:

1 2 3 4 5
{ "rss": 8622080, "heapTotal": 4083456, "heapUsed": 1621800 }

其中:

  • rss 返回進程當前佔用物理內存大小
  • heapTotal 返回v8 引擎堆內存大小
  • heapUsed 返回v8 引擎正在使用堆內存大小

nextTick

啟動一個纖程

1 2
static process.nextTick(Function func, ...args);

調用參數:

  • func: Function, 制定纖程執行的函數
  • args: ..., 可變參數序列,此序列會在纖程內傳遞給函數

binding

獲取指定名稱的內部模塊

1
static Value process.binding(String name);

調用參數:

  • name: String, 指定要查詢的內部模塊名稱

返回結果:

  • Value, 返回指定的內部模塊

靜態屬性

argv

Array, 返回當前進程的命令行參數

1
static readonly Array process.argv;

execArgv

Array, 返回當前進程的特殊命令行參數,這些參數被fibjs 用於設置運行環境

1
static readonly Array process.execArgv;

version

String, 返回fibjs 版本字符串

1
static readonly String process.version;

versions

Object, 返回fibjs 及組件的版本信息

1
static readonly Object process.versions;

execPath

String, 查詢當前運行執行文件完整路徑

1
static readonly String process.execPath;

env

Object, 查詢當前進程的環境變量

1
static readonly Object process.env;

arch

String, 查詢當前cpu 環境,可能的結果為'amd64', 'arm', 'arm64', 'ia32'

1
static readonly String process.arch;

platform

String, 查詢當前平台名稱,可能的結果為'darwin', 'freebsd', 'linux', 或'win32'

1
static readonly String process.platform;

pid

Integer, 讀取當前對象指向的進程的id

1
static readonly Integer process.pid;

ppid

Integer, 讀取當前對象指向的父進程的id

1
static readonly Integer process.ppid;

stdin

Stream, 查詢當前進程標準輸入對象, 在 tty 中為 TTYInputStream, 否則為 Stream

1
static readonly Stream process.stdin;

stdout

Stream, 查詢當前進程標準輸出對象, 在 tty 中為 TTYOutputStream, 否則為 Stream

1
static readonly Stream process.stdout;

stderr

Stream, 查詢當前進程標準錯誤輸出對象, 在 tty 中為 TTYOutputStream, 否則為 Stream

1
static readonly Stream process.stderr;

exitCode

Integer, 查詢和設置當前進程的退出碼

1
static Integer process.exitCode;