FAQ PerlConsultez toutes les FAQ
Nombre d'auteurs : 18, nombre de questions : 250, dernière mise à jour : 29 octobre 2015 Ajouter une question
Bienvenue sur la FAQ Perl. Cette FAQ a pour vocation de vous enseigner ou de vous faire revoir les notions élémentaires de ce fantastique langage. Perl est très utilisé dans différents domaines depuis la gestion système, le réseaux, l'administration de bases de données, le web (CGI), la bureautique, la conception d'interfaces graphiques ou des contextes scientifiques telle la bioinformatique. Nous espérons que cette FAQ vous sera d'une grande utilité.
Vous souhaitez participer à l'amélioration de cette FAQ, n'hésitez pas !! Commentez
Bonne lecture !
Un processus est un appel au système pour exécuter un programme. Dans ce chapitre, nous allons envisager trois façons d'exécuter des processus. Dans un premier temps, intéressons-nous à la fonction system.
L'appel de cette fonction demande à Perl de lancer un processus enfant pour exécuter le programme appelé par system. Une fois que ce programme se termine, le processus enfant s'achève et rend la main au processus père à savoir votre programme :
Code perl : | Sélectionner tout |
system "ls";
Code perl : | Sélectionner tout |
1 2 | my $commande = 'ls'; system($commande) == 0 or die "Erreur de la commande : $commande\n"; |
La fonction exec est semblable à system. Mais, sa différence avec la fonction précédente réside dans le fait que le processus père se termine en même temps que le processus fils.
Code perl : | Sélectionner tout |
1 2 | exec ("ls"); print "Et maintenant, qu'allons-nous faire ?"; |
Utiliser les backquotes (ou apostrophes inversées pour les francophones) vous permettra de récupérer une sortie pour vos programmes. Par exemple :
Code perl : | Sélectionner tout |
1 2 | $sortie = `ls`; print $sortie; |
Amis du C, réjouissez-vous ! Votre fonction pour les threads favoris, à savoir fork, est aussi présente dans Perl. Pour les non-initiés, à quoi sert la fonction fork ?
Cette fonction permet de créer un processus enfant et de mettre le processus parent (votre programme Perl) en veille en attendant la fin de ce processus enfant. Elle duplique (clone) un processus en créeant une copie conforme de lui même :
Code perl : | Sélectionner tout |
1 2 3 4 5 6 7 | defined($pid = fork) or die "Pas de fork possible : $!"; unless($pid) { print "Processus fils.\n"; exec "ls"; } waitpid($pid, 0); print "Retour au père."; |
A la première ligne, la variable scalaire reçoit le résultat de fork. Si cette variable est nulle (undef pour Perl), une erreur est levée. Dans le cas contraire, $pid est défini, vaut zéro et le processus enfant est créé.
Tant que cette variable $pid demeure définie, le processus enfant reste en vie et exécute la tâche qui lui a été assignée : écrire une chaîne de caractères et lancer la commande système ls. Si vous avez bien suivi ce chapitre, vous aurez noté que cet appel utilise la fonction exec. Une fois que cette fonction termine sa tâche, le processus qui l'appelle se termine en même temps que la fonction. Ainsi, le processus enfant meurt (l'informatique est cruelle !) et retourne son code au numéro pid du père. D'ailleurs, que fait le processus père pendant l'exécution du fils ? Avec la fonction waitpid, celui-ci attend la valeur de retour pid de son fils. Une fois cette valeur obtenue, le processus père reprend la main et écrit une chaîne de caractères.
Un signal système est un signal envoyé à un processus. Par exemple, sous Unix, citons :
SIGHUP | 1 | interruption de l'entrée |
SIGINT | 2 | interruption clavier forte (Ctrl-C) |
SIGQUIT | 3 | interruption clavier faible (Ctrl-\) |
SIGILL | 4 | instruction illégale |
SIGABRT | 6 | arrêt catastrophe d'un processus (abort()) |
SIGKILL | 9 | arrêt impératif |
SIGTERM | 15 | terminaison normale d'un processus |
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.