Heim >Web-Frontend >js-Tutorial >Wie führe ich Befehlszeilen-Binärdateien in Node.js aus?

Wie führe ich Befehlszeilen-Binärdateien in Node.js aus?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-27 06:46:09454Durchsuche

How to Execute Command Line Binaries in Node.js?

Ausführen von Befehlszeilen-Binärdateien in Node.js

Das Ausführen von Drittanbieter-Binärdateien ist eine wesentliche Aufgabe bei der Portierung von CLI-Bibliotheken aus anderen Sprachen nach Node.js. Um dies in Node.js zu erreichen, stehen mehrere Module zur Verfügung:

child_process.exec

Für gepufferte Ausgabe verwenden Sie 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

Wenn Sie die Ausgabe lieber als Stream erhalten möchten, verwenden Sie spawn:

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}`); });

Synchronisierte Optionen

Node.js bietet auch synchrone Gegenstücke zu den Exec- und Spawn-Funktionen:

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);

Historische Unterstützung

Für Versionen von Node.js vor ES5 wurden häufig die folgenden Methoden verwendet:

// 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);

Das obige ist der detaillierte Inhalt vonWie führe ich Befehlszeilen-Binärdateien in Node.js aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn