Comment générer un processus enfant avec Node.js

Découvrez comment générer un processus enfant avec Node.js

Node.js fournit unchild_processmodule qui permet de générer des processus enfants.

Exigez le module et obtenez lespawnfonction de celui-ci:

const { spawn } = require('child_process')

alors tu peux appelerspawn()passant 2 paramètres.

Lepremier paramètreest la commande à exécuter.

Ledeuxième paramètreest un tableau contenant une liste d'options.

Voici un exemple:

spawn('ls', ['-lh', 'test'])

Dans ce cas, vous exécutez lelscommande avec 2 options:-lhettest. Cela aboutit à la commandels -lh test, qui (étant donné que letestle fichier existe dans le même dossier dans lequel vous exécutez cette commande), donne les détails sur le fichier:

-rw-r--r--  1 flaviocopes  staff     6B Sep 25 09:57 test

Le résultat de laspawn()l'appel de fonction est une instance deChildProcessclasse qui identifie le processus enfant généré.

Voici un exemple un peu plus compliqué, qui fonctionne parfaitement. Nous regardons letestet chaque fois qu'il est modifié, nous exécutons lels -lhcommande dessus:

'use strict'

const fs = require(‘fs’) const { spawn } = require(‘child_process’) const filename = ‘test’

fs.watch(filename, () => { const ls = spawn(‘ls’, [’-lh’, filename]) })

Il manque une chose. Nous devons diriger la sortie du processus enfant vers le processus principal, sinon nous ne verrons aucune sortie de celui-ci.

Nous le faisons en appelant lepipe()méthode sur lestdoutpropriété du processus enfant:

'use strict'

const fs = require(‘fs’) const { spawn } = require(‘child_process’) const filename = ‘test’

fs.watch(filename, () => { const ls = spawn(‘ls’, [’-lh’, filename]) ls.stdout.pipe(process.stdout) })

Téléchargez mon gratuitManuel de Node.js


Plus de didacticiels sur les nœuds: