Maison  >  Article  >  interface Web  >  Comment appeler la ligne de commande dans nodejs

Comment appeler la ligne de commande dans nodejs

PHPz
PHPzoriginal
2023-04-17 16:36:162138parcourir

Node.js est une plate-forme JavaScript open source extrêmement évolutive qui est largement utilisée dans le développement d'applications Web et d'outils de ligne de commande. Dans Node.js, nous pouvons utiliser l'API de sous-processus pour accéder à la ligne de commande du système d'exploitation et exécuter des commandes système. Cet article explique comment utiliser l'API de sous-processus pour appeler la ligne de commande dans Node.js.


Introduction à l'API Child Process

Node.js fournit le module child_process, qui nous permet de créer des processus enfants dans les programmes Node.js et d'interagir avec eux. La ligne de commande peut être invoquée via ce module.

Les deux API les plus couramment utilisées dans le module child_process sont spawn et exec. spawn démarre un processus enfant pour exécuter la ligne de commande et renvoie un objet qui peut interagir avec le processus ; exec est une fonction asynchrone qui exécute la ligne de commande et renvoie stdout et stderr.

méthode spawn

La méthode spawn est utilisée pour démarrer un nouveau processus afin d'exécuter la ligne de commande. Cette méthode accepte deux paramètres : la commande à exécuter et le tableau de paramètres.

Par exemple :

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

ls.stdout.on('data', (data) => {
  console.log(`stdout: ${data}`);
});

ls.stderr.on('data', (data) => {
  console.error(`stderr: ${data}`);
});

ls.on('close', (code) => {
  console.log(`子进程退出码:${code}`);
});

Ici, nous avons utilisé la méthode spawn pour exécuter la commande "ls -lh /usr". Cette méthode renvoie un objet ChildProcess dont les propriétés stdin, stdout et stderr peuvent être utilisées pour interagir avec le processus enfant. Dans cet exemple, nous écoutons les événements stdout et stderr du processus enfant afin de capturer les données et les informations d'erreur générées par le processus enfant. Lorsque le processus enfant se termine, nous écoutons également son événement de fermeture.

Méthode exec

La méthode exec nous permet d'exécuter une ligne de commande et de renvoyer la sortie stdout et stderr de la ligne de commande. Cette méthode accepte deux paramètres : la commande à exécuter et une fonction de rappel qui prend trois paramètres : stdout, stderr et l'objet d'erreur.

Par exemple :

const { exec } = require('child_process');

exec('ls', (err, stdout, stderr) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log(`stdout: ${stdout}`);
  console.error(`stderr: ${stderr}`);
});

Ici, nous avons utilisé la méthode exec pour exécuter la commande "ls". Dans la fonction de rappel, nous capturons la sortie stdout et stderr, ainsi que toutes les erreurs pouvant survenir.

Interagir avec la ligne de commande

En plus d'appeler la ligne de commande pour exécuter des commandes, vous pouvez également interagir avec la ligne de commande dans le programme Node.js. Dans les méthodes spawn et exec, un attribut stdin est fourni grâce auquel nous pouvons envoyer une entrée au processus enfant.

Par exemple, démarrez un programme Node.js sous Windows et entrez la commande run sur la ligne de commande :

const { spawn } = require('child_process');
const node = spawn('node');
node.stdin.write('console.log("Hello, world!");\n');
node.stdin.write('process.exit();\n');

Ici, nous utilisons la méthode spawn pour démarrer un nouveau processus Node.js et passer un programme JavaScript via l'attribut stdin est envoyé au processus. Le programme imprime "Bonjour tout le monde !" et se ferme.

Résumé

Cet article explique comment utiliser l'API de sous-processus pour appeler la ligne de commande dans Node.js. Nous avons appris à utiliser les méthodes spawn et exec, et avons appris à interagir avec la ligne de commande. L'API de sous-processus nous permet d'exécuter facilement des lignes de commande dans Node.js, enrichissant encore les scénarios d'application de Node.js.

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