# 第21章.進程對象
> process 對象的擴展
Electron 中的 `process` 對象使用了如下的 APIs 進行擴展:
## 事件
### Event: 'loaded'
當 Electrn 加載好它內部的初始化腳本,準備載入 web 頁面或者 `main` 腳本的時候被發射。
它可以被 preload 腳本使用來在 node 集成被關閉時添加被移除的 Node 全局符號到全局作用域中:
```javascript
// preload.js
const _setImmediate = setImmediate
const _clearImmediate = clearImmediate
process.once('loaded', () => {
global.setImmediate = _setImmediate
global.clearImmediate = _clearImmediate
})
```
## 屬性
### `process.noAsar`
設置為 `true` 可以禁用 Node 內建模塊中對 `asar` 檔案的支持。
### `process.type`
當前進程的類型,可能是 `"browser"` (即主進程) 或 `"renderer"`。
### `process.versions.electron`
Electron 的版本字符串。
### `process.versions.chrome`
Chrome 的版本字符串。
### `process.resourcesPath`
資源目錄路徑。
### `process.mas`
用于 Mac App Store 構建,這個屬性為 `true`;對于其它構建,則是 `undefined`。
### `process.windowsStore`
如果應用運行為一個 Windows Store app (appx),這個屬性為 `true`;否則為 `undefined`。
### `process.defaultApp`
如果應用通過被作為參數傳遞到默認 app 啟動,這個屬性在主進程中為 `true`,否則是 `undefined`。
## 方法
`process` 對象有以下方法:
### `process.crash()`
引發當前進程的主線程崩潰。
### `process.hang()`
引發當前進程的主線程掛起。
### `process.setFdLimit(maxDescriptors)` *macOS* *Linux*
* `maxDescriptors` Integer
設置文件描述符軟限制為 `maxDescriptors` 或者操作系統硬限制,無論是否低于當前進程。
### `process.getProcessMemoryInfo()`
返回 `Object`:
* `workingSetSize` Integer —— 實際物理內存中當前被占用的內存數量
* `peakWorkingSetSize` Integer —— 實際物理內存中曾經被占用的最大的內存數量
to actual physical RAM.
* `privateBytes` Integer —— 沒有跟其它進程共享的內存數量,比如 JS heap 或 HTML content.
* `sharedBytes` Integer —— 和其它進程共享的內存數量,典型的是被 Electron 代碼自身消耗的內存。
返回一個對象,表示當前進程的內存使用狀態。注意所有的狀態都以千字節(KB)報告。
### `process.getSystemMemoryInfo()`
返回 `Object`:
* `total` Integer —— 系統中可用的物理內存總量,以 KB 表示
* `free` Integer —— 沒有被應用或者硬盤緩存使用的內存總量
* `swapTotal` Integer —— 系統中可用的交換內存總量,KB表示。 *Windows* *Linux*
* `swapFree` Integer —— 系統中可用的交換內存總量,KB表示 *Windows* *Linux*
返回一個對象,表示整個系統的內存使用狀態。注意,所有狀態都以 KB 的形式報告。
- 索引
- 前言.關于Electron
- 第一部分 開發指南
- 第1章.平臺支持
- 第2章.安全、原生功能和你的責任
- 第3章.版本說明
- 第4章.發行應用
- 第5章.Mac App商店提交指南
- 第6章.Windows商店指南
- 第7章.應用打包
- 第8章.使用Node原生模塊
- 第9章.調試主進程
- 9.1.在VSCode中調試
- 9.2.在node-inspector中調試
- 第10章.使用Selenium和WebDriver
- 第11章.DevTools擴展
- 第12章.使用Pepper Flash插件
- 第13章.使用Widevine CDM插件
- 第14章.通過自動化持續集成系統進行測試
- 第15章.離屏渲染
- 第二部分 使用教程
- 第16章.快速入門
- 第17章.桌面環境集成
- 第18章.在線/離線事件探測
- 第19章.應答式編譯器(REPL)
- 第三部分 API參考
- 第20章.API簡介
- 第21章.進程對象
- 第22章.Chrome的命令行開關
- 第23章.環境變量
- 第24章.定制的DOM元素
- 24.1.File 對象
- 24.2.webview 標簽
- 第25章.主進程模塊
- 25.1.app
- 25.2.BrowserWindow
- 25.3.無框架窗口
- 第26章.渲染進程模塊
- 第27章.兩種進程可用的模塊
- 第四部分 高級主題
- 附 FAQ
- 附 文檔規范
- 附 示例用例
- 1.無邊框窗口