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
Freigeben: 2024-12-27 06:46:09
Original
450 Leute haben es durchsucht

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}`);
});
Nach dem Login kopieren

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}`); });
Nach dem Login kopieren

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);
Nach dem Login kopieren

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);
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage