>웹 프론트엔드 >JS 튜토리얼 >Node.js에서 명령줄 바이너리를 실행하는 방법은 무엇입니까?

Node.js에서 명령줄 바이너리를 실행하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-27 06:46:09454검색

How to Execute Command Line Binaries in Node.js?

Node.js에서 명령줄 바이너리 실행

타사 바이너리 실행은 CLI 라이브러리를 다른 언어에서 Node.js로 포팅할 때 필수적인 작업입니다. Node.js에서 이를 달성하기 위해 사용 가능한 여러 모듈이 있습니다:

child_process.exec

버퍼 출력의 경우 exec를 사용하십시오:

const { exec } = require('child_process');
exec('cat *.js bad_file | wc -l', (err, stdout, stderr) => {
  if (err) return; // Node couldn't execute the command

  console.log(`stdout: ${stdout}`);
  console.log(`stderr: ${stderr}`);
});

child_process.spawn

출력을 스트림으로 수신하려면 다음을 사용하세요. generate:

const { spawn } = require('child_process');
const child = spawn('ls', ['-lh', '/usr']);

// For text chunks, use `child.stdout.setEncoding('utf8');`
child.stdout.on('data', (chunk) => { /* data in chunks */ });

// Pipe the stream elsewhere
child.stderr.pipe(dest);

child.on('close', (code) => { console.log(`Exited with code ${code}`); });

동기식 옵션

Node.js는 exec 및 generate 함수에 대한 동기식 기능도 제공합니다.

const { execSync } = require('child_process');
let stdout = execSync('ls');

const { spawnSync} = require('child_process');
const child = spawnSync('ls', ['-lh', '/usr']);

console.log('error', child.error);
console.log('stdout ', child.stdout);
console.log('stderr ', child.stderr);

역사적 지원

ES5 이전 Node.js 버전의 경우 일반적으로 다음 방법이 사용되었습니다. 사용됨:

// Complete output as a buffer
var exec = require('child_process').exec;
exec('prince -v builds/pdf/book.html -o builds/pdf/book.pdf',
  function(error, stdout, stderr) { // command output in stdout });

// Handling large output chunks with streams
var spawn = require('child_process').spawn;
var child = spawn('prince', ['-v', 'builds/pdf/book.html', '-o', 'builds/pdf/book.pdf']);

// Output in chunks
child.stdout.on('data', (chunk) => { /* data in chunks */ });

// Piping output
child.stdout.pipe(dest);

위 내용은 Node.js에서 명령줄 바이너리를 실행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.