더북(TheBook)

이번에는 파이썬 프로그램을 실행해보겠습니다. 실습하려면 파이썬 3가 설치되어 있어야 합니다.

test.py

print('hello python')

spawn.js

const spawn = require('child_process').spawn;

const process = spawn('python', ['test.py']);

process.stdout.on('data', function(data) {
  console.log(data.toString());
}); // 실행 결과

process.stderr.on('data', function(data) {
  console.error(data.toString());
}); // 실행 에러

파이썬 코드를 실행하는 명령어인 python test.py를 노드의 spawn을 통해 실행합니다. spawn의 첫 번째 인수로 명령어를, 두 번째 인수로 옵션 배열을 넣으면 됩니다. 결과는 exec과 마찬가지로 stdout, stderr의 데이터로 나옵니다.

콘솔

$ node spawn
hello python

execspawn의 차이가 궁금할 것입니다. exec은 셸을 실행해서 명령어를 수행하고, spawn은 새로운 프로세스를 띄우면서 명령어를 실행합니다. spawn에서도 세 번째 인수로 { shell: true }를 제공하면 exec처럼 셸을 실행해서 명령어를 수행합니다. 셸을 실행하는지 마는지에 따라 수행할 수 있는 명령어에 차이가 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.