Maison >interface Web >js tutoriel >Comment puis-je exécuter des binaires en ligne de commande à l'aide de Node.js ?

Comment puis-je exécuter des binaires en ligne de commande à l'aide de Node.js ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-10 01:58:17511parcourir

How Can I Execute Command Line Binaries Using Node.js?

Exécuter des binaires en ligne de commande avec Node.js

Dans Ruby, vous pouvez exécuter des binaires tiers en utilisant la méthode système. Dans Node.js, il existe deux options pour exécuter des binaires en ligne de commande : child_process.exec et child_process.spawn.

Sortie tamponnée avec child_process.exec

Utilisez child_process. exec si vous souhaitez recevoir l'intégralité du résultat de la commande à une fois.

const { exec } = require('child_process');
exec('cat *.js bad_file | wc -l', (err, stdout, stderr) => {
  if (err) {
    // Handle error
  } else {
    console.log(`stdout: ${stdout}`);
    console.log(`stderr: ${stderr}`);
  }
});

Sortie en streaming avec child_process.spawn

Utilisez child_process.spawn si vous préférez recevoir la sortie progressivement en morceaux sous forme de flux.

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

child.stdout.on('data', (chunk) => {
  // Data from standard output is here as buffers
});

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

Exécution synchrone

Pour exécution synchrone (non recommandée pour les sorties volumineuses), utilisez les méthodes child_process.execSync et child_process.spawnSync.

Remarque : Pour les versions Node.js antérieures à ES5, reportez-vous au code suivant pour la gestion exécution en ligne de commande :

Sortie tamponnée avec child_process.exec

var exec = require('child_process').exec;
var cmd = 'prince -v builds/pdf/book.html -o builds/pdf/book.pdf';

exec(cmd, function(error, stdout, stderr) {
  // command output is in stdout
});

Sortie en streaming avec child_process.spawn

var spawn = require('child_process').spawn;
var child = spawn('prince', [
  '-v', 'builds/pdf/book.html',
  '-o', 'builds/pdf/book.pdf'
]);

child.stdout.on('data', function(chunk) {
  // output will be here in chunks
});

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn