-
node:child_process
const cp1 = require('node:child_process')
`spawn`과 `exec`가 하는 역할은 유사하지만 세부 기능에서 차이가 난다.
`spawn`은 비동기로 실행되고 스트림(stream)으로 결과를 얻는다,
`exec`는 동기로 실행되고 버퍼(buffer)로 결과를 얻는다.nodejs에선 자식프로세스의 생성은 기본적으로 spawn을 통해 이루어지고, exec,fork등의 편의 함수도 내부적으론 spawn을 사용한다.
spawn
`spawn`함수를 실행하면 `stdout`과 `stderr` 스트림을 포함하는 개체를 리턴한다, 그래서 자식 process의 출력을 `stdout` 객체로 받을 수 있다.
`stdout` 개체는 `data`와 `end` 등의 이벤트를 발생한다.exec
`exec`함수를 실행하면 buffer를 리턴한다.
buffer 사이즈는 고정된 크기의 값이있다. 만약, 더 큰 값을 리턴하면 오류가 나면서 프로그램이 종료된다. 버퍼 사이즈를 조절할 수 있다. maxBuffer값은 default로 1024*1024byte이며 stdout,stderr의 버퍼 크기다, 버퍼크기를 초과하는 입력이 들어오면 자식프로세스가 종료되며 버퍼를 초과하는 부분이 잘린다.execFile()은 exec와 거의 유사하지만, 차이점은 default로 shell을 실행하지 않는다.
execSync()은 동기 방식이다.'NodeJs' 카테고리의 다른 글
Npx Npm 오류 - npm ERR enoent ENOENT no such file or directory, lstat 'AppData\Roaming\npm' (0) 2023.06.27 Process 실행 결과 확인 (0) 2023.06.27 SWR(useSWR, mutate) (0) 2023.02.16 package.json 값 구성 (0) 2023.01.29 Nodejs 적용 회사,제품,서비스 (0) 2023.01.27 Next.js Nuxt.js Nest.js 차이 (0) 2023.01.27 Bootstrap 설치하기 (0) 2023.01.22 Formidable IncomingForm() 값 Ex (0) 2023.01.16