Skip to content

Commit

Permalink
Node와 프로세스 마무리
Browse files Browse the repository at this point in the history
  • Loading branch information
genie-youn committed Oct 25, 2019
1 parent f76653a commit 38a0d53
Showing 1 changed file with 14 additions and 4 deletions.
18 changes: 14 additions & 4 deletions JavaScript/Node와_Process.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
# Node와 Process

### 들어가며
Node 환경에서 개발을 하다 보면 `process`란 객체를 쓸 일이 왕왕 생긴다. 특히 `process.NODE_ENV` 같은 아이들..
Node 환경에서 개발을 하다 보면 `process` 란 객체를 쓸 일이 왕왕 생긴다. 특히 `process.NODE_ENV` 같은 아이들..
런타임 혹은 빌드타임에 무언과 실행환경과 관련된 값이 필요하면 보통 이 객체 안에 있으니 가져다 쓰겠는데, 이 아이는 왜 있는건지 언제부터 있던건지 누가 생성해주는것인지 궁금해져 정리하려 한다.

> 레퍼런스는 [다음](https://nodejs.org/api/process.html) 을 참고한다.
### Node에서의 Process
`process` 객체는 현재 Node.js 프로세스의 정보와 제어를 가능하게 하는 글로벌 객체이다. 모든 Node.js 어플리케이션이라면 접근 가능하다. (r명시적으로 `require`를 통해 접근할 지는 선택의 자유이다. 즉 없이도 접근 가능하다.)
`process` 객체는 현재 Node.js 프로세스의 정보와 제어를 가능하게 하는 글로벌 객체이다. 모든 Node.js 어플리케이션이라면 접근 가능하다. (명시적으로 `require` 를 통해 접근할 지는 선택의 자유이다. 즉 없이도 접근 가능하다.)

한가지 신기한건 이 `process` 객체가 Node의 `EventEmitter` 타입의 인스턴스라는것.

Expand All @@ -25,8 +25,7 @@ process.on('{hook}}', (code) => {

- beforeExit: Node의 이벤트루프가 비어있고 더 이상 추가할 작업이 없을 때
+ `process.exit()`이나 처리되지 않은 예외로 인한 종료등 명시적인 종료에 의해 애플리케이션이 종료될 때는 **호출되지 않음** 에 유의한다.
+ `beforeExit`는 특정한 작업을 추가하려는 의도가 아니고, 단순히 `exit` 대신 사용하면 안된다.
> 왜지
+ `beforeExit` 는 특정한 작업을 추가하려는 의도가 아니고, 단순히 `exit` 대신 사용하면 안된다.

- disconnect: `Child Process``Cluster Mode`로 동작시 생성된 IPC 채널이 종료되었을 때
- exit: 다음과 같은 이유로 Node의 프로세스가 종료될 때 호출됨
Expand Down Expand Up @@ -110,3 +109,14 @@ console.log(process.env.TEST);
```

Worker 인스턴스를 생성할 때 명시적으로 작성하지 않는 한, 각 Worker 스레드는 부모 스레드의 `process.env` 사본을 생성자에 갖고있다. `process.env`의 변경은 Worker 스레드 사이에서 가시적이지 않으며, 오로지 메인 스레드만이 os나 natvie add-ons에 가시적인 변경을 만들 수 있다.

이 아이들도 `process` 객체 안에 있다.

```
process.stderr
process.stdin
process.stdout
```

### 마치며
Node.js의 `process`는 Node 애플리케이션이라면 모두 갖고있는 `EventEmitter` 타입의 글로벌 객체이다. 이 객체에는 Node 프로세스에 관련된 정보를 담고있는 프로퍼티와 프로세서를 제어할 수 있는 유용한 메서드들이 있으며 프로세스의 라이프 사이클에 실행할 콜백을 줄 수도 있다.

0 comments on commit 38a0d53

Please sign in to comment.