nodejs
Node.js는 백엔드 언어이지만 시스템 수준의 작업을 제어할 수 있는 기능도 갖추고 있습니다. 그 대표적인 예가 바로
const { spawn } = require('child_process');
const { spawn } = require('child_process');
const ls = spawn('ls', ['-lh', '/usr']);
ls.stdout.on('data', (data) => {
console.log(`출력: ${data}`);
});
ls.stderr.on('data', (data) => {
console.error(`에러: ${data}`);
});
ls.on('close', (code) => {
console.log(`프로세스 종료 코드: ${code}`);
});
이 예제는 리눅스/macOS 기준으로
const { spawn } = require('child_process');
const py = spawn('python3', ['script.py']);
py.stdout.on('data', (data) => {
console.log(`Python 결과: ${data}`);
});
py.stderr.on('data', (data) => {
console.error(`Python 에러: ${data}`);
});
py.on('close', (code) => {
console.log(`Python 종료 코드: ${code}`);
});
const command = spawn('grep', ['hello']);
command.stdin.write('hello world\nbye world\n');
command.stdin.end();
command.stdout.on('data', (data) => {
console.log(`grep 결과: ${data}`);
});
const tail = spawn('tail', ['-f', '/var/log/system.log']);
tail.stdout.on('data', (data) => {
console.log(`로그 스트림: ${data}`);
});
child.on('error', (err) => {
console.error('실행 중 에러 발생:', err);
});
child.on('close', (code) => {
console.log(`프로세스 종료 코드: ${code}`);
});
이를 통해 Node.js는 웹 서버뿐 아니라, 데이터 처리 자동화, 로그 수집기, 커맨드라인 유틸리티 등 다양한 분야에서 강력한 도구로 확장될 수 있습니다.