node.js 를 이용 하여 하위 프로 세 스 를 만 드 는 방법 에 대한 자세 한 설명

머리말
node 자 체 는 단일 프로 세 스 이 고 구동 모드 를 사용 하여 병행 합 니 다.단일 프로 세 스 가 다 핵 cpu 에서 의 자원 낭 비 를 해결 하기 위해 node 는 cluster 와 child 를 제공 합 니 다.process 모듈 은 여러 개의 키 프로 세 스 를 만 듭 니 다.
Node.js 는 단일 스 레 드 입 니 다.현재 보편적으로 다 중 프로세서 인 기계 에 대한 낭비 입 니 다.어떻게 이용 할 수 있 습 니까?그래서 childprocess 모듈 이 나 타 났 습 니 다.child_process 모듈 은 다른 프로 세 스에 서 생 성 되 고 파생 되 며 작업 을 수행 할 수 있 습 니 다.
child_process 모듈 은 부모 프로 세 스에 서 하위 프로 세 스에 접근 하 는 표현 형식 으로 ChildProcess 의 새로운 종 류 를 제공 합 니 다.Process 모듈 도 ChildProcess 대상 이다.부모 모듈 에서 process 를 방문 할 때 부모 ChildProcess 대상 입 니 다.하위 프로 세 스에 서 Process 를 방문 하면 ChildProcess 대상 입 니 다.
한 대상 을 이해 하 는 것 은 사건,방법,속성 밖 에 없다.ChildProcess 도 마찬가지다.
모든 하위 프로 세 스 는 세 개의 흐름 대상 을 가지 고 있 습 니 다:child.stdin,child.stdout,child.stderr.그들 은 부모 프로 세 스 의 stdio 흐름 을 공유 할 수 있 습 니 다.
여기 서 child 를 이용 한process 모듈 에서 exec,spawn,fork 세 가지 방법 으로 하위 프로 세 스 를 조작 합 니 다.
node-childProcess 파일 을 만 들 고 node-childPro.js 파일 을 만 듭 니 다.
그 중 한 줄 의 코드 는 다음 과 같다.

console.log("   " + process.argv[2] + "   。" );
//       process.argv
//console.log("   " + process.argv + "   。" );
exec()방법
node-childProcess 파일 에 node-childPro-exec.js 파일 을 새로 만 들 었 습 니 다.코드 는 다음 과 같 습 니 다.

const fs = require('fs');
const child_process = require('child_process');
for (var i = 0; i < 3; i++) {
 //        。    node   node-childPro.js   i     。 node-childPro.js  process.argv         
 var childProcess = child_process.exec('node node-childPro.js '+i,
 //                        
 function (error, stdout, stderr) {
  if (error) {
  console.log(error.stack);
  console.log('Error code: ' + error.code);
  console.log('Signal received: ' + error.signal);
  }
  console.log('stdout: ' + stdout);
  console.log('stderr: ' + stderr);
 });
 childProcess.on('exit', function (code) {
 console.log('      ,    ' + code);
 });
}
터미널 실행 코드 결 과 는 다음 과 같 습 니 다.

G:
ode
ode-childProcess> node node-childPro-exec.js , 0 stdout: 0 。 stderr: , 0 stdout: 1 。 stderr: , 0 stdout: 2 。 stderr:
spawn()방법
node-childProcess 파일 에 node-childPro-spawn.js 를 새로 만 들 었 습 니 다.코드 는 다음 과 같 습 니 다.

const fs = require('fs');
const child_process = require('child_process');
 for(var i=0; i<3; i++) {
 var childProcess = child_process.spawn('node', ['node-childPro-spawn.js', i]);  
 childProcess.stdout.on('data', function (data) {
 console.log('stdout: ' + data);
 });
childProcess.stderr.on('data', function (data) {
 console.log('stderr: ' + data);
 });
 childProcess.on('close', function (code) {
 console.log('      ,    '+code);
 });
}
터미널 실행 코드 결 과 는 다음 과 같 습 니 다.

G:
ode
ode-childProcess> node node-childPro-spawn.js stdout: 0 。 , 0 stdout: 1 。 stdout: 2 。 , 0 , 0
fork()방법
node-childProcess 파일 에 node-childPro-fork.js 를 새로 만 들 었 습 니 다.코드 는 다음 과 같 습 니 다.

const fs = require('fs');
const child_process = require('child_process');
 for(var i=0; i<3; i++) {
 var childProcess = child_process.fork("node-childPro.js", [i]); 
 childProcess.on('close', function (code) {
 console.log('      ,    ' + code);
 });
}
터미널 실행 코드 결 과 는 다음 과 같 습 니 다.

G:
ode
ode-childProcess> node node-childPro-fork.js 0 。 1 。 , 0 2 。 , 0 , 0
exec,spawn,fork 에 대하 여
     1.exec 함 수 는 spawn 에 대한 우호 적 인 패키지 로 Shell 명령 해석 을 추가 하여 복잡 한 명령 을 직접 삽입 할 수 있 습 니 다.
     2.exec 함수 캐 시 서브 프로 세 스 의 출력 을 하위 프로 세 스 의 출력 을 리 셋 함수 매개 변수 로 되 돌려 줍 니 다.
     3.spawn 은 하위 스 레 드 가 실 행 된 후에 데 이 터 를 하위 프로 세 스에 서 주 프로 세 스 로 되 돌려 주기 시작 합 니 다.(응용 장면,예 를 들 어'시스템 모니터링')
     4.spawn 은 콜백 함 수 를 지원 하지 않 습 니 다.스 트림 을 통 해 메 인 프로 세 스에 데 이 터 를 전송 하여 다 중 프로 세 스 간 의 데이터 교환 을 실현 합 니 다.
     5.fork()는 spawn()의 특수 한 상황 으로 Node 프로 세 스 를 파생 시 키 는 데 사 용 됩 니 다.일반 ChildProcess 인 스 턴 스 가 가지 고 있 는 모든 방법 을 제외 하고 돌아 오 는 대상 은 내 장 된 통신 채널 도 가지 고 있다.
다운로드 주소:https://gitee.com/wangFengJ/node/tree/master/node-childProcess
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기