Skip to main content

프로세스

process 객체의 확장 기능

프로세스: Main, Renderer

Electron의 process 객체는 Node.js process 객체를 확장한 것이다. 이 객체에는 다음과 같은 이벤트, 속성, 메서드가 추가된다:

샌드박스

샌드박스 환경에서 렌더링 프로세스는 제한된 process 객체를 사용한다. 이 객체는 전체 API 중 일부만 제공한다:

  • crash()
  • hang()
  • getCreationTime()
  • getHeapStatistics()
  • getBlinkMemoryInfo()
  • getProcessMemoryInfo()
  • getSystemMemoryInfo()
  • getSystemVersion()
  • getCPUUsage()
  • uptime()
  • argv
  • execPath
  • env
  • pid
  • arch
  • platform
  • sandboxed
  • contextIsolated
  • type
  • version
  • versions
  • mas
  • windowsStore
  • contextId

이벤트

이벤트: 'loaded'

Electron이 내부 초기화 스크립트를 로드하고 웹 페이지 또는 메인 스크립트를 로드하기 시작할 때 발생한다.

프로퍼티

process.defaultApp Readonly

boolean 타입의 값이다. 앱이 기본 Electron 실행 파일에 인자로 전달되어 시작될 때, 이 프로퍼티는 메인 프로세스에서 true가 된다. 그렇지 않은 경우에는 undefined이다. 예를 들어 electron . 명령어로 앱을 실행하면, 이 프로퍼티는 true가 된다. 이때 앱이 패키징되어 있는 경우(isPackagedtrue)에도 마찬가지이다. 이 프로퍼티는 process.argv에서 몇 개의 인자를 제거해야 하는지 판단할 때 유용하게 사용할 수 있다.

process.isMainFrame 읽기 전용

boolean 타입의 값으로, 현재 렌더러 컨텍스트가 "메인" 렌더러 프레임일 때 true가 된다. 현재 프레임의 ID가 필요하다면 webFrame.routingId를 사용해야 한다.

process.mas Readonly

boolean 타입의 값이다. Mac App Store 빌드에서 이 속성은 true가 되며, 다른 빌드에서는 undefined가 된다.

process.noAsar

애플리케이션 내부에서 ASAR 지원을 제어하는 boolean 값이다. 이 값을 true로 설정하면 Node.js의 내장 모듈에서 asar 아카이브에 대한 지원이 비활성화된다.

process.noDeprecation

stderr에 출력되는 사용 중단 경고(deprecation warning)를 제어하는 불리언 값이다. 이 값을 true로 설정하면 사용 중단 경고가 표시되지 않는다. 이 속성은 --no-deprecation 커맨드라인 플래그 대신 사용할 수 있다.

process.resourcesPath 읽기 전용

리소스 디렉토리의 경로를 나타내는 string 타입의 값이다.

process.sandboxed 읽기 전용

boolean 타입의 값이다. 렌더러 프로세스가 샌드박스 환경에서 실행 중일 때 이 속성은 true를 반환한다. 그렇지 않은 경우 undefined를 반환한다.

process.contextIsolated 읽기 전용

이 속성은 현재 렌더러 컨텍스트에서 contextIsolation이 활성화되어 있는지 여부를 나타내는 boolean 값이다. 메인 프로세스에서는 이 값이 undefined로 설정된다.

process.throwDeprecation

boolean 값은 더 이상 사용되지 않는 기능(deprecation)에 대한 경고를 예외로 처리할지 여부를 제어한다. 이 값을 true로 설정하면 더 이상 사용되지 않는 기능에 대해 에러가 발생한다. 이 속성은 --throw-deprecation 커맨드라인 플래그 대신 사용된다.

process.traceDeprecation

process.traceDeprecationstderr에 출력되는 폐기 예정(deprecation) 경고에 스택 트레이스(stack trace)를 포함할지 여부를 제어하는 불리언 값이다. 이 값을 true로 설정하면 폐기 예정 경고와 함께 스택 트레이스가 출력된다. 이 속성은 --trace-deprecation 커맨드라인 플래그를 대체한다.

process.traceProcessWarnings

process.traceProcessWarningsstderr에 출력되는 프로세스 경고에 스택 트레이스를 포함할지 여부를 제어하는 불리언 값이다. 이 값을 true로 설정하면 프로세스 경고(사용 중단 경고 포함)에 대한 스택 트레이스가 출력된다. 이 속성은 --trace-warnings 커맨드라인 플래그를 대체한다.

process.type 읽기 전용

현재 프로세스의 타입을 나타내는 string이다. 가능한 값은 다음과 같다:

  • browser - 메인 프로세스
  • renderer - 렌더러 프로세스
  • worker - 웹 워커 내부
  • utility - 서비스로 실행된 노드 프로세스

process.versions.chrome 읽기 전용

Chrome의 버전 문자열을 나타내는 string 타입의 값이다.

process.versions.electron 읽기 전용

Electron의 버전 문자열을 나타내는 string 타입의 값이다.

process.windowsStore Readonly

boolean 타입의 값이다. 앱이 Windows Store 앱(appx)으로 실행 중일 경우 이 속성은 true가 된다. 그렇지 않으면 undefined로 설정된다.

process.contextId 읽기 전용

process.contextId는 현재 자바스크립트 컨텍스트의 전역 고유 ID를 나타내는 string 타입의 선택적 값이다.
각 프레임은 고유한 자바스텍스트 컨텍스트를 갖는다. contextIsolation이 활성화된 경우, 격리된 세계(Isolated World)도 별도의 자바스크립트 컨텍스트를 가진다.
이 프로퍼티는 렌더러 프로세스에서만 사용할 수 있다.

process.parentPort

이 속성은 현재 프로세스가 UtilityProcess인 경우, 부모 프로세스와 통신할 수 있는 Electron.ParentPort 객체를 반환한다. 만약 현재 프로세스가 UtilityProcess가 아니라면 null을 반환한다.

메서드

process 객체는 다음과 같은 메서드를 제공한다:

process.crash()

현재 프로세스의 메인 스레드를 강제로 중단시킨다.

process.getCreationTime()

number | null 타입의 값을 반환한다. 이 값은 epoch 이후의 밀리초 단위 시간을 나타내며, 정보를 가져올 수 없는 경우 null을 반환한다.

이 메서드는 애플리케이션의 생성 시간을 나타낸다. 시간은 epoch 이후의 밀리초 단위로 표현된다. 프로세스 생성 시간을 가져올 수 없는 경우 null을 반환한다.

process.getCPUUsage()

CPUUsage를 반환한다.

process.getHeapStatistics()

Object를 반환한다:

  • totalHeapSize Integer - 전체 힙 크기
  • totalHeapSizeExecutable Integer - 실행 가능한 힙 크기
  • totalPhysicalSize Integer - 실제 물리적 메모리 크기
  • totalAvailableSize Integer - 사용 가능한 메모리 크기
  • usedHeapSize Integer - 사용 중인 힙 크기
  • heapSizeLimit Integer - 힙 크기 제한
  • mallocedMemory Integer - malloc으로 할당된 메모리 크기
  • peakMallocedMemory Integer - malloc으로 할당된 메모리의 최대 크기
  • doesZapGarbage boolean - 가비지 컬렉션 시 메모리를 초기화하는지 여부

V8 힙 통계를 담은 객체를 반환한다. 모든 통계는 킬로바이트(KB) 단위로 보고된다.

process.getBlinkMemoryInfo()

Object를 반환한다:

  • allocated Integer - 모든 할당된 객체의 크기를 킬로바이트 단위로 나타낸다.
  • total Integer - 전체 할당된 공간의 크기를 킬로바이트 단위로 나타낸다.

Blink 메모리 정보를 담은 객체를 반환한다. 렌더링이나 DOM과 관련된 메모리 이슈를 디버깅할 때 유용하다. 모든 값은 킬로바이트 단위로 보고된다는 점에 유의한다.

process.getProcessMemoryInfo()

Promise<ProcessMemoryInfo>를 반환한다. 이 Promise는 ProcessMemoryInfo로 resolve된다.

이 메서드는 현재 프로세스의 메모리 사용 통계를 담은 객체를 반환한다. 모든 통계는 킬로바이트(KB) 단위로 보고된다. 이 API는 앱이 준비된 후에 호출해야 한다.

Chromium은 macOS에서 residentSet 값을 제공하지 않는다. 이는 macOS가 최근에 사용되지 않은 페이지를 메모리에서 압축하기 때문이다. 따라서 resident set size 값은 예상과 다를 수 있다. macOS에서는 private 메모리가 프로세스의 실제 압축 전 메모리 사용량을 더 잘 나타낸다.

process.getSystemMemoryInfo()

Object를 반환한다:

  • total Integer - 시스템에서 사용 가능한 물리적 메모리의 총량을 킬로바이트(KB) 단위로 나타낸다.
  • free Integer - 애플리케이션이나 디스크 캐시에서 사용하지 않는 메모리의 총량을 킬로바이트(KB) 단위로 나타낸다.
  • swapTotal Integer Windows Linux - 시스템에서 사용 가능한 스왑 메모리의 총량을 킬로바이트(KB) 단위로 나타낸다.
  • swapFree Integer Windows Linux - 시스템에서 사용 가능한 스왑 메모리의 여유량을 킬로바이트(KB) 단위로 나타낸다.

이 메서드는 시스템 전체의 메모리 사용 통계를 제공하는 객체를 반환한다. 모든 통계는 킬로바이트(KB) 단위로 보고된다.

process.getSystemVersion()

string 타입의 값을 반환한다. 이 값은 호스트 운영체제의 버전을 나타낸다.

예제:

const version = process.getSystemVersion()
console.log(version)
// macOS에서 -> '10.13.6'
// Windows에서 -> '10.0.17763'
// Linux에서 -> '4.15.0-45-generic'

참고: 이 메서드는 os.release()와 달리 macOS에서 커널 버전이 아닌 실제 운영체제 버전을 반환한다.

process.takeHeapSnapshot(filePath)

  • filePath string - 출력 파일 경로

boolean 반환 - 스냅샷 생성 성공 여부를 나타낸다.

V8 힙 스냅샷을 생성하고 filePath에 저장한다.

process.hang()

현재 프로세스의 메인 스레드를 멈추게 한다.

process.setFdLimit(maxDescriptors) macOS Linux

  • maxDescriptors Integer

현재 프로세스에 대해 파일 디스크립터의 소프트 제한을 maxDescriptors 또는 운영체제의 하드 제한 중 더 낮은 값으로 설정한다.