>  기사  >  웹 프론트엔드  >  Node.js의 프로세스 객체 이해

Node.js의 프로세스 객체 이해

青灯夜游
青灯夜游앞으로
2020-12-01 17:36:243691검색

Node.js의 프로세스 객체 이해

관련 권장사항: "node js tutorial"

프로세스 객체는 전역 변수이자 현재 Node.js 프로세스의 정보와 작업 방법을 제공하는 EventEmitter 인스턴스입니다

시스템 정보

프로세스 object 주요 시스템 정보를 반환하기 위한 속성을 제공합니다.

  • title: 프로세스 이름, 기본값 노드, 오류 로그를 더 명확하게 만들기 위해 프로그램을 수정할 수 있습니다.
  • pid: 현재 프로세스 pid
  • ppid: 상위 현재 프로세스 프로세스 pid
  • 플랫폼: 프로세스가 실행 중인 운영 체제(aix, drawin, freebsd, linux, openbsd, sunos, win32)
  • version: Node.js 버전
  • env: 현재 프로세스의 모든 환경 변수 Shell

stdin & stdout

Node.js 및 표준 입출력 장치 상호작용 객체도 프로세스 객체를 통해 제공됩니다

process.stdin.pipe(process.stdout)

간단한 코드 한줄로 콘솔 입력 내용을 그대로 콘솔에 출력할 수 있습니다

실행 정보

process.execPath

process.execPath 속성은 현재 스크립트를 실행하는 Node 바이너리 파일의 절대 경로를 반환합니다.

process.argv

process.argv 속성은 배열을 반환합니다. 는 스크립트 실행 시 매개변수인데 배열의 처음 두 개는 고정되어 있습니다

  • 현재 스크립트를 실행하는 Node 바이너리 파일의 절대 경로

  • 현재 실행 파일의 절대 경로

process.jsprocess.js

console.log(process.argv);
node process.js a --b=2

[
  '/usr/local/bin/node',
  '/Users/undefined/node-demo/process.js',
  'a',
  '--b=2'
]

process.execArgv

process.execArgv 属性返回一个数组,成员是命令行下执行脚本时,在 Node 可执行文件与脚本文件之间的命令行参数

process.js

console.log(process.execArgv);
node --inspect process.js

[ '--inspect' ]

常用操作方法

  • process.chdir():切换工作目录到指定目录
  • process.cwd():返回运行当前脚本的工作目录的路径,也就是执行 node 命令时候的目录
  • process.exit():退出当前进程
  • process.memoryUsage():返回 Node.js 进程的内存使用情况

进程事件

process 对象是 EventEmitter 对象实例,可以监听一些系统核心事件, 常使用的有

exit

当 Node.js 进程因以下原因之一即将退出时,则会触发 exit 事件:

  • 显式调用 process.exit() 方法
  • Node.js 事件循环不再需要执行任何其他工作

此时无法阻止退出事件循环,并且一旦所有 exit 事件的监听器都已完成运行时,Node.js 进程将终止

process.on('exit', (code) => {
  console.log(`退出码: ${code}`);
});

uncaughtException

当前进程抛出一个没有被捕捉的错误时,会触发uncaughtException事件

process.on('uncaughtException', function (err) {
  console.error(err.stack);
});

beforeExit

当 Node.js 清空其事件循环并且没有其他工作要安排时,会触发 beforeExit 事件。 通常 Node.js 进程将在没有调度工作时退出,但是在 beforeExit 事件上注册的监听器可以进行异步调用使 Node.js 进程继续

process.on('beforeExit', (code) => {
  console.log('进程 beforeExit 事件的代码: ', code);
});

process.on('exit', (code) => {
  console.log('进程 exit 事件的代码: ', code);
});

console.log('此消息最新显示');

// 打印:
// 此消息最新显示
// 进程 beforeExit 事件的代码: 0
// 进程 exit 事件的代码: 0

message

如果使用 IPC 通道 fork Node.js 进程,子进程收到父进程使用 childprocess.send() 发送的消息,就会触发 message

process.on('message', (m) => {
  console.log('子进程收到消息', m);
});
rrreee

process.execArgv

process. execArgv 속성은 다음과 같은 경우 노드 실행 파일과 스크립트 파일 사이의 명령줄 매개변수가 멤버인 배열을 반환합니다. 명령줄에서 스크립트 실행

process.js

rrreeerrreee

Common Operation Methods

process.chdir(): 작업 디렉터리를 지정된 디렉터리로 전환합니다. 디렉토리

🎜process.cwd(): 현재 스크립트가 실행 중인 작업 디렉토리(node ​​명령이 실행될 때의 디렉토리)의 경로를 반환합니다.🎜🎜process .exit(): 현재 프로세스를 종료합니다🎜🎜process.memoryUsage (): Node.js 프로세스의 메모리 사용량을 반환합니다🎜🎜🎜

프로세스 이벤트🎜🎜프로세스 개체는 EventEmitter 개체의 인스턴스이며 모니터링할 수 있습니다. 일반적으로 사용되는 일부 핵심 시스템 이벤트 🎜🎜

exit🎜🎜다음 이유 중 하나로 인해 Node.js 프로세스가 종료되려고 하면 exit 이벤트가 트리거됩니다. 🎜 🎜🎜명시적으로 process.exit() 메서드 호출 🎜🎜Node.js 이벤트 루프는 더 이상 추가 작업을 수행할 필요가 없습니다. 🎜🎜🎜현재로서는 이벤트 루프 종료를 방지할 수 있는 방법이 없습니다. all exit 이벤트 리스너의 실행이 모두 완료되면 Node.js 프로세스가 종료됩니다🎜rrreee

uncaughtException🎜🎜현재 프로세스에서 잡히지 않는 오류가 발생하면 다음과 같습니다. Triggered uncaughtException 이벤트 🎜rrreee

beforeExit 🎜🎜 beforeExit 이벤트는 Node.js가 이벤트 루프를 지우고 더 이상 예약할 작업이 없을 때 트리거됩니다. . 일반적으로 Node.js 프로세스는 예정된 작업이 없으면 종료되지만 beforeExit 이벤트에 등록된 리스너는 Node.js 프로세스가 계속 진행되도록 비동기 호출을 할 수 있습니다🎜rrreee

message 🎜🎜 IPC 채널을 사용하여 Node.js 프로세스를 포크하고 하위 프로세스가 childprocess.send()를 사용하여 상위 프로세스가 보낸 메시지를 받으면 message 이벤트가 실행됩니다🎜rrreee🎜 process.nextTick(callback)🎜🎜process.nextTick() 메소드는 다음 시점에 실행되도록 콜백을 대기열에 추가합니다🎜🎜더 많은 프로그래밍 관련 지식을 원하시면, 방문해주세요: 🎜프로그래밍 비디오 코스🎜! ! 🎜

위 내용은 Node.js의 프로세스 객체 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제