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가 된다. 이때 앱이 패키징되어 있는 경우(isPackaged가 true)에도 마찬가지이다. 이 프로퍼티는 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.traceDeprecation는 stderr에 출력되는 폐기 예정(deprecation) 경고에 스택 트레이스(stack trace)를 포함할지 여부를 제어하는 불리언 값이다. 이 값을 true로 설정하면 폐기 예정 경고와 함께 스택 트레이스가 출력된다. 이 속성은 --trace-deprecation 커맨드라인 플래그를 대체한다.

process.traceProcessWarnings​

process.traceProcessWarnings는 stderr에 출력되는 프로세스 경고에 스택 트레이스를 포함할지 여부를 제어하는 불리언 값이다. 이 값을 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 또는 운영체제의 하드 제한 중 더 낮은 값으로 설정한다.