Chaque langage a ses propres avantages. Lorsqu'il est combiné les uns avec les autres, le programme s'exécutera plus efficacement ou selon la méthode d'implémentation la plus simple, utilise des processus enfants pour appeler des commandes système ou des fichiers et des documents. nodejs.org/api/child_process.html. Le processus enfant NodeJS fournit des interfaces importantes pour interagir avec le système. Ses principales API sont : des interfaces pour l'entrée standard, la sortie standard et la sortie d'erreur standard.
Le processus enfant NodeJS fournit une interface importante pour interagir avec le système. Ses principales API sont :
Interfaces pour entrée standard, sortie standard et sortie d'erreur standard
child.stdin obtient une entrée standard
child.stdout obtient une sortie standard
child.stderr obtient une sortie d'erreur standard
Récupérez le PID du processus enfant : child.pid
Fournit une méthode pour générer un processus enfant : child_process.spawn(cmd, args=[], [options])
Fournit une méthode pour exécuter directement les commandes système : child_process.exec(cmd, [options], callback)
Fournit une méthode pour appeler les fichiers de script : child_process.execFile(file, [args], [options], [callback])
Fournit une méthode pour tuer le processus : child.kill(signal='SIGTERM')
Prenons un exemple pour le ressentir, c'est très intéressant, haha~~
1. Utilisez des processus enfants pour appeler des commandes système (obtenir l'utilisation de la mémoire système)
Créez un nouveau fichier nodejs nommé cmd_spawn.js avec le code suivant :
free.stdout.on('data', function (data) {
console.log('sortie standard:n' données);
});
free.stderr.on('data', function (data) {
console.log('sortie d'erreur standard : n' données);
});
free.on('exit', function (code, signal) {
console.log('processus enfant eixt,exit:' code);
});
2. Exécuter la commande système (child_process.exec())
J'utilise encore celui-ci très souvent, et ses fonctions me semblent un peu plus puissantes que celles ci-dessus. Par exemple, j'aime faire attention à la météo. Maintenant, je veux recourber l'interface météo pour renvoyer les données au format json. Peut-être que je dois effectuer certaines opérations dessus, donc je vais l'imprimer et ne pas l'utiliser.
Créez un nouveau fichier nodejs nommé cmd_exec.js :
3. Appelez le script shell en passant les paramètres (child_process.execFile())
Cela nécessite d'abord de préparer un script shell. Par exemple, si je souhaite me connecter à un serveur pour changer son mot de passe, je dois fournir l'adresse IP, l'utilisateur, le nouveau mot de passe, l'ancien mot de passe et créer un nouveau fichier de script shell change_password. .sh :
IP=""
NOM=""
MOT DE PASSE=""
NOUVEAU MOT DE PASSE=""
while getopts "H:U:P:N:" arg #Les deux points après l'option indiquent que l'option nécessite des paramètres
faire
cas $arg dans
H)
IP=$OPTARG
;;
U)
NOM=$OPTARG
;;
P)
MOT DE PASSE=$OPTARG
;;
N)
NEWPASSWORD=$OPTARG
;;
?) #Quand certaines options ne sont pas reconnues, l'argument est ?
echo "Contient des paramètres inconnus"
sortie 1
;;
esac
fait
#Obtenez d'abord l'ID utilisateur
USERID=`/usr/bin/ipmitool -I lanplus -H $IP -U $NAME -P $PASSWORD liste d'utilisateurs | grep root |
# echo $USERID
#Changer le mot de passe en fonction de l'ID utilisateur
/usr/bin/ipmitool -I lanplus -H $IP -U $NAME -P $PASSWORD mot de passe défini par l'utilisateur $USERID $NEWPASSWORD
rappel(err, stdout, stderr);
});
Après avoir lu ce qui précède, il n'y a en fait aucun suspense quant à l'appel du script python. Il s'agit essentiellement d'exécuter la commande.
4. Appelez le script python (le script python lui-même passe des paramètres)
Insérez ici une digression. Le paragraphe suivant est une brève explication des paramètres passés en python :
Résultat de l'exécution :
Je vais également préparer un fichier nodejs pour appeler ce script python (j'ai apporté des modifications à py_test.py, voir ci-dessous), file_python.js :
Le contenu de py_test.py est le suivant :
# -*-coding:utf-8 -*-
importer le système
imprimer sys.argv
Les résultats en cours d'exécution sont les suivants :
C'est toujours très bien, et j'ai réalisé un autre blog exquis pour 2014. Haha~~