Study/Node.js

[노드JS] 프로세스 객체 간단하게 살펴보기

AC 2019. 3. 8. 18:10



process 객체는 프로그램을 실행했을 때 만들어지는 프로세스 정보를 다루는 객체이다. process 객체의 주요 속성과 메소드는 다음과 같다.



 속성/메소드 이름

설명 

argv

 프로세스를 실행할 때 전달되는 파라미터(매개변수) 정보

env

 환경 변수 정보

exit()

 프로세스를 끝내는 메소드


[표] process 객체의 주요 속성과 메소드


argv 속성은 프로세스를 실행할 때 전달되는 파라미터 정보를 가지고 있다. 이 정보를 확인하기 위해 새로운 자바스크립트 파일을 추가해 보겠다. 자바스크립트 파일을 추가하는 방법은 잊지 않으셨죠? 왼쪽 프로젝트 창에서 마우스 오른쪽 버튼을 누르고 팝업 메뉴가 나타나면 [파일 만들기] 메뉴를 선택한다. 새로운 파일 이름으로 ch02_test2.js를 입력하면 파일이 만들어지면서 오른쪽 작업 영역에 파일이 나타난다.


새로 만들어진 파일에 다음 코드를 입력한다.





자바스크립트 파일을 실행하기 위해 사용한 node.exe 파일의 이름이 첫 번째 파라미터가 되고 자바스크립트 파일의 패스가 두 번째 파라미터가 된다. 


만약 파일을 실행할 때 파라미터를 더 넣어 주면 이 argv 속성에 그 파라미터가 추가된다. 

자바스크립트에서는 여러 개의 값이 들어갈 수 있는 배열 객체를 [] 기호를 사용해 만들 수 있으며, 로그로 출력했을 때도 [] 기호 안에 배열 객체의 값들을 콤마로 구분하여 표시한다.


※ 첫 번째 파라미터의 값이 다르게 표시되나요?

첫 번째 파라미터의 값이 'node'가 아니라 C:\Program Files\nodejs\node.exe처럼 표시될 수 있다. 이것은 node.exe 실행 파일의 위치까지 함께 표시된 것이다.


console객체의 dir() 메소드를 사용하면 객체가 가지고 있는 속성을 그대로 출력할 수 있다. 콘솔에 표시된 결과에서 알 수 있듯이, process 객체에 들어 있는 argv 속성은 배열 객체이며 파일을 실행하기만 해도 node 명령과 파일 패스가 파라미터 값으로 들어간다는 것을 알 수 있다.


이번에는 다음 코드를 추가로 입력하고 저장하자.


if (process.argv.length > 2) {

console.log('세 번째 파라미터의 값 : %s', process.argv[2]);

}


process.argv.forEach(function(item, index) {

console.log(index + ' : ', item);

});


여기에는 세 번째 파라미터의 값을 확인하는 코드가 들어 있다. 

따라서 이 파일을 실행할 때 파라미터를 추가로 전달하면 그 값을 확인할 수 있다. 


argv 속성은 배열 객체이므로 인덱스 2를 사용하면 세 번째 파라미터의 값을 확인할 수 있다.


 만약 argv 속성에 들어 있는 모든 값을 하나씩 출력하고 싶다면 forEach() 메소드를 사용한다. 


forEach() 메소드는 배열 안에 들어 있는 각 아이템 값과 인덱스를 함께 전달하므로 배열 객체에 들어 있는 값들을 하나씩 확인하기에 좋다.


명령 프롬프트에서 다음 명령을 실행하면 다음과 같은 결과가 출력된다.


node ch02_test2.js __port 7001



▲process.argv 속성을 명령 프롬프트에서 확인하기


이번에는 process 객체의 env 속성을 이용해서 환경 변수의 값을 확인해 보겠다. 윈도우의 시스템 환경 변수로 OS 환경 변수가 있다. 

이 환경 변수의 값으로는 'Windows_NT'와 같은 값이 들어 있을 수 있다.


이 값을 확인하기 위해 새로운 자바스크립트 소스 파일 ch02_test3.js를 만든 후 다음 코드를 입력한다.


console.dir(process.env);


console.log('OS 환경 변수의 값 : ' + process.env['OS']);



그러면 다음 그림처럼 여러분 PC의 환경 변수 값이 모두 출력되고 마지막에 OS 환경 변수의 값을 보여주는 한 줄이 더 출력된다.



▲ process.env 속성으로 OS 환경 변수를 확인한 결과


process.env 속성을 사용하면 사용자 정의 환경 변수(user variables)뿐만 아니라 OS와 같은 시스템 환경 변수(system variables)도 접근할 수 있다.



LIST