2015-09-01 23:21:29 +00:00
|
|
|
# process
|
2014-05-23 14:56:56 +00:00
|
|
|
|
2016-05-19 11:12:56 +00:00
|
|
|
> Extensions to process object.
|
|
|
|
|
2016-11-23 19:20:56 +00:00
|
|
|
Process: [Main](../glossary.md#main-process), [Renderer](../glossary.md#renderer-process)
|
2016-11-03 17:26:00 +00:00
|
|
|
|
2016-11-16 17:54:29 +00:00
|
|
|
Electron's `process` object is extended from the
|
|
|
|
[Node.js `process` object](https://nodejs.org/api/process.html).
|
|
|
|
It adds the following events, properties, and methods:
|
2016-05-19 11:12:56 +00:00
|
|
|
|
2018-07-30 01:13:42 +00:00
|
|
|
## Sandbox
|
|
|
|
|
|
|
|
In sandboxed renderers the `process` object contains only a subset of the APIs:
|
|
|
|
- `crash()`
|
|
|
|
- `hang()`
|
2018-11-28 16:08:17 +00:00
|
|
|
- `getCreationTime()`
|
2018-07-30 01:13:42 +00:00
|
|
|
- `getHeapStatistics()`
|
2018-11-28 08:57:53 +00:00
|
|
|
- `getProcessMemoryInfo()`
|
2018-07-30 01:13:42 +00:00
|
|
|
- `getSystemMemoryInfo()`
|
2019-02-18 12:59:48 +00:00
|
|
|
- `getSystemVersion()`
|
2018-08-21 18:05:45 +00:00
|
|
|
- `getCPUUsage()`
|
|
|
|
- `getIOCounters()`
|
2018-07-30 01:13:42 +00:00
|
|
|
- `argv`
|
|
|
|
- `execPath`
|
|
|
|
- `env`
|
2018-08-21 18:05:45 +00:00
|
|
|
- `pid`
|
|
|
|
- `arch`
|
2018-07-30 01:13:42 +00:00
|
|
|
- `platform`
|
2018-08-21 18:05:45 +00:00
|
|
|
- `sandboxed`
|
|
|
|
- `type`
|
|
|
|
- `version`
|
|
|
|
- `versions`
|
2018-09-30 21:24:00 +00:00
|
|
|
- `mas`
|
|
|
|
- `windowsStore`
|
2018-07-30 01:13:42 +00:00
|
|
|
|
2015-10-05 03:41:36 +00:00
|
|
|
## Events
|
|
|
|
|
|
|
|
### Event: 'loaded'
|
|
|
|
|
|
|
|
Emitted when Electron has loaded its internal initialization script and is
|
|
|
|
beginning to load the web page or the main script.
|
|
|
|
|
|
|
|
It can be used by the preload script to add removed Node global symbols back to
|
|
|
|
the global scope when node integration is turned off:
|
|
|
|
|
2016-04-22 14:15:31 +00:00
|
|
|
```javascript
|
2015-10-05 03:41:36 +00:00
|
|
|
// preload.js
|
2016-07-26 01:39:25 +00:00
|
|
|
const _setImmediate = setImmediate
|
|
|
|
const _clearImmediate = clearImmediate
|
2016-05-10 17:15:09 +00:00
|
|
|
process.once('loaded', () => {
|
2016-07-26 01:39:25 +00:00
|
|
|
global.setImmediate = _setImmediate
|
|
|
|
global.clearImmediate = _clearImmediate
|
|
|
|
})
|
2015-10-05 03:41:36 +00:00
|
|
|
```
|
|
|
|
|
2015-12-01 05:43:52 +00:00
|
|
|
## Properties
|
|
|
|
|
2017-06-21 18:58:44 +00:00
|
|
|
### `process.defaultApp`
|
|
|
|
|
|
|
|
A `Boolean`. When app is started by being passed as parameter to the default app, this
|
|
|
|
property is `true` in the main process, otherwise it is `undefined`.
|
|
|
|
|
2019-01-22 19:24:46 +00:00
|
|
|
### `process.isMainFrame`
|
|
|
|
|
|
|
|
A `Boolean`, `true` when the current renderer context is the "main" renderer
|
|
|
|
frame. If you want the ID of the current frame you should use `webFrame.routingId`.
|
|
|
|
|
2017-06-21 18:58:44 +00:00
|
|
|
### `process.mas`
|
|
|
|
|
|
|
|
A `Boolean`. For Mac App Store build, this property is `true`, for other builds it is
|
|
|
|
`undefined`.
|
|
|
|
|
2015-12-01 05:43:52 +00:00
|
|
|
### `process.noAsar`
|
|
|
|
|
2017-03-25 03:51:23 +00:00
|
|
|
A `Boolean` that controls ASAR support inside your application. Setting this to `true`
|
|
|
|
will disable the support for `asar` archives in Node's built-in modules.
|
2015-12-01 05:43:52 +00:00
|
|
|
|
2017-06-21 18:58:44 +00:00
|
|
|
### `process.noDeprecation`
|
2016-05-19 11:12:56 +00:00
|
|
|
|
2017-11-29 10:58:24 +00:00
|
|
|
A `Boolean` that controls whether or not deprecation warnings are printed to `stderr`.
|
|
|
|
Setting this to `true` will silence deprecation warnings. This property is used
|
2017-06-21 18:58:44 +00:00
|
|
|
instead of the `--no-deprecation` command line flag.
|
2016-05-19 11:12:56 +00:00
|
|
|
|
2018-11-26 21:00:46 +00:00
|
|
|
### `process.enablePromiseAPIs`
|
|
|
|
|
|
|
|
A `Boolean` that controls whether or not deprecation warnings are printed to `stderr` when
|
2019-03-20 20:12:47 +00:00
|
|
|
formerly callback-based APIs converted to Promises are invoked using callbacks. Setting this to `true`
|
2018-11-26 21:00:46 +00:00
|
|
|
will enable deprecation warnings.
|
|
|
|
|
2017-06-21 18:58:44 +00:00
|
|
|
### `process.resourcesPath`
|
2016-05-19 11:12:56 +00:00
|
|
|
|
2017-06-21 18:58:44 +00:00
|
|
|
A `String` representing the path to the resources directory.
|
2016-05-19 11:12:56 +00:00
|
|
|
|
2018-08-21 18:05:45 +00:00
|
|
|
### `process.sandboxed`
|
|
|
|
|
|
|
|
A `Boolean`. When the renderer process is sandboxed, this property is `true`,
|
|
|
|
otherwise it is `undefined`.
|
|
|
|
|
2017-06-21 18:58:44 +00:00
|
|
|
### `process.throwDeprecation`
|
2016-05-19 11:12:56 +00:00
|
|
|
|
2017-06-21 18:58:44 +00:00
|
|
|
A `Boolean` that controls whether or not deprecation warnings will be thrown as
|
2017-11-29 10:58:24 +00:00
|
|
|
exceptions. Setting this to `true` will throw errors for deprecations. This
|
2017-06-21 18:58:44 +00:00
|
|
|
property is used instead of the `--throw-deprecation` command line flag.
|
2016-05-19 11:12:56 +00:00
|
|
|
|
2017-06-21 18:58:44 +00:00
|
|
|
### `process.traceDeprecation`
|
2016-05-19 11:12:56 +00:00
|
|
|
|
2017-06-21 18:58:44 +00:00
|
|
|
A `Boolean` that controls whether or not deprecations printed to `stderr` include
|
2017-11-29 10:58:24 +00:00
|
|
|
their stack trace. Setting this to `true` will print stack traces for deprecations.
|
|
|
|
This property is instead of the `--trace-deprecation` command line flag.
|
2016-05-19 11:12:56 +00:00
|
|
|
|
2017-06-21 18:58:44 +00:00
|
|
|
### `process.traceProcessWarnings`
|
|
|
|
A `Boolean` that controls whether or not process warnings printed to `stderr` include
|
2017-11-29 10:58:24 +00:00
|
|
|
their stack trace. Setting this to `true` will print stack traces for process warnings
|
|
|
|
(including deprecations). This property is instead of the `--trace-warnings` command
|
|
|
|
line flag.
|
2016-05-19 11:12:56 +00:00
|
|
|
|
2017-06-21 18:58:44 +00:00
|
|
|
### `process.type`
|
|
|
|
|
2018-11-08 14:28:06 +00:00
|
|
|
A `String` representing the current process's type, can be `"browser"` (i.e. main process), `"renderer"`, or `"worker"` (i.e. web worker).
|
2017-06-21 18:58:44 +00:00
|
|
|
|
|
|
|
### `process.versions.chrome`
|
|
|
|
|
|
|
|
A `String` representing Chrome's version string.
|
|
|
|
|
|
|
|
### `process.versions.electron`
|
|
|
|
|
|
|
|
A `String` representing Electron's version string.
|
2016-05-19 11:12:56 +00:00
|
|
|
|
|
|
|
### `process.windowsStore`
|
|
|
|
|
2017-03-25 03:51:23 +00:00
|
|
|
A `Boolean`. If the app is running as a Windows Store app (appx), this property is `true`,
|
2016-05-19 11:12:56 +00:00
|
|
|
for otherwise it is `undefined`.
|
|
|
|
|
2015-10-05 03:41:36 +00:00
|
|
|
## Methods
|
2015-08-29 04:47:31 +00:00
|
|
|
|
2017-06-21 18:58:44 +00:00
|
|
|
The `process` object has the following methods:
|
2015-08-29 04:47:31 +00:00
|
|
|
|
2016-04-22 21:58:41 +00:00
|
|
|
### `process.crash()`
|
|
|
|
|
|
|
|
Causes the main thread of the current process crash.
|
|
|
|
|
2018-08-10 14:03:30 +00:00
|
|
|
### `process.getCreationTime()`
|
|
|
|
|
|
|
|
Returns `Number | null` - The number of milliseconds since epoch, or `null` if the information is unavailable
|
|
|
|
|
|
|
|
Indicates the creation time of the application.
|
|
|
|
The time is represented as number of milliseconds since epoch. It returns null if it is unable to get the process creation time.
|
|
|
|
|
2017-06-21 18:58:44 +00:00
|
|
|
### `process.getCPUUsage()`
|
2015-08-29 15:14:52 +00:00
|
|
|
|
2017-06-21 18:58:44 +00:00
|
|
|
Returns [`CPUUsage`](structures/cpu-usage.md)
|
2015-08-29 15:14:52 +00:00
|
|
|
|
2017-06-21 18:58:44 +00:00
|
|
|
### `process.getIOCounters()` _Windows_ _Linux_
|
2015-08-29 15:14:52 +00:00
|
|
|
|
2017-06-21 18:58:44 +00:00
|
|
|
Returns [`IOCounters`](structures/io-counters.md)
|
2016-05-17 21:46:50 +00:00
|
|
|
|
2018-06-10 12:00:36 +00:00
|
|
|
### `process.getHeapStatistics()`
|
|
|
|
|
|
|
|
Returns `Object`:
|
|
|
|
|
|
|
|
* `totalHeapSize` Integer
|
|
|
|
* `totalHeapSizeExecutable` Integer
|
|
|
|
* `totalPhysicalSize` Integer
|
|
|
|
* `totalAvailableSize` Integer
|
|
|
|
* `usedHeapSize` Integer
|
|
|
|
* `heapSizeLimit` Integer
|
|
|
|
* `mallocedMemory` Integer
|
|
|
|
* `peakMallocedMemory` Integer
|
|
|
|
* `doesZapGarbage` Boolean
|
|
|
|
|
|
|
|
Returns an object with V8 heap statistics. Note that all statistics are reported in Kilobytes.
|
|
|
|
|
2018-11-28 08:57:53 +00:00
|
|
|
### `process.getProcessMemoryInfo()`
|
|
|
|
|
2019-03-20 16:26:57 +00:00
|
|
|
Returns `Promise<ProcessMemoryInfo>` - Resolves with a [ProcessMemoryInfo](structures/process-memory-info.md)
|
2018-11-28 08:57:53 +00:00
|
|
|
|
|
|
|
Returns an object giving memory usage statistics about the current process. Note
|
|
|
|
that all statistics are reported in Kilobytes.
|
|
|
|
This api should be called after app ready.
|
|
|
|
|
2019-03-20 20:12:47 +00:00
|
|
|
Chromium does not provide `residentSet` value for macOS. This is because macOS
|
2018-11-28 08:57:53 +00:00
|
|
|
performs in-memory compression of pages that haven't been recently used. As a
|
|
|
|
result the resident set size value is not what one would expect. `private` memory
|
|
|
|
is more representative of the actual pre-compression memory usage of the process
|
|
|
|
on macOS.
|
|
|
|
|
2016-09-24 23:59:30 +00:00
|
|
|
### `process.getSystemMemoryInfo()`
|
|
|
|
|
|
|
|
Returns `Object`:
|
2016-10-25 03:35:18 +00:00
|
|
|
|
2016-07-14 23:10:19 +00:00
|
|
|
* `total` Integer - The total amount of physical memory in Kilobytes available to the
|
2016-05-19 11:12:56 +00:00
|
|
|
system.
|
2016-07-14 23:10:19 +00:00
|
|
|
* `free` Integer - The total amount of memory not being used by applications or disk
|
2016-05-19 11:12:56 +00:00
|
|
|
cache.
|
2017-11-29 10:38:35 +00:00
|
|
|
* `swapTotal` Integer _Windows_ _Linux_ - The total amount of swap memory in Kilobytes available to the
|
|
|
|
system.
|
|
|
|
* `swapFree` Integer _Windows_ _Linux_ - The free amount of swap memory in Kilobytes available to the
|
|
|
|
system.
|
2016-09-24 23:59:30 +00:00
|
|
|
|
|
|
|
Returns an object giving memory usage statistics about the entire system. Note
|
|
|
|
that all statistics are reported in Kilobytes.
|
2017-05-04 17:49:01 +00:00
|
|
|
|
2019-02-18 12:59:48 +00:00
|
|
|
### `process.getSystemVersion()`
|
|
|
|
|
|
|
|
Returns `String` - The version of the host operating system.
|
|
|
|
|
|
|
|
Examples:
|
2019-04-16 23:03:17 +00:00
|
|
|
|
2019-05-06 15:29:01 +00:00
|
|
|
* `macOS` -> `10.13.6`
|
|
|
|
* `Windows` -> `10.0.17763`
|
|
|
|
* `Linux` -> `4.15.0-45-generic`
|
2019-02-18 12:59:48 +00:00
|
|
|
|
|
|
|
**Note:** It returns the actual operating system version instead of kernel version on macOS unlike `os.release()`.
|
|
|
|
|
2018-09-18 18:00:31 +00:00
|
|
|
### `process.takeHeapSnapshot(filePath)`
|
|
|
|
|
|
|
|
* `filePath` String - Path to the output file.
|
|
|
|
|
|
|
|
Returns `Boolean` - Indicates whether the snapshot has been created successfully.
|
|
|
|
|
|
|
|
Takes a V8 heap snapshot and saves it to `filePath`.
|
|
|
|
|
2017-06-21 18:58:44 +00:00
|
|
|
### `process.hang()`
|
2017-05-04 17:49:01 +00:00
|
|
|
|
2017-06-21 18:58:44 +00:00
|
|
|
Causes the main thread of the current process hang.
|
2017-05-04 17:49:01 +00:00
|
|
|
|
2017-06-21 18:58:44 +00:00
|
|
|
### `process.setFdLimit(maxDescriptors)` _macOS_ _Linux_
|
2017-05-04 17:49:01 +00:00
|
|
|
|
2017-06-21 18:58:44 +00:00
|
|
|
* `maxDescriptors` Integer
|
|
|
|
|
|
|
|
Sets the file descriptor soft limit to `maxDescriptors` or the OS hard
|
|
|
|
limit, whichever is lower for the current process.
|