[reseaux] processus en parallèle
Bonjour tout le monde,
voila aujourd'hui je viens vers vous car je me questionne: peut-on parralléliser des processus en perl.
Explication:
J'ai écrit un programme pour NT 4 qui me permette de récupérer l'ID d'un process.
J'ai un fichier de paramètre où j'écris le nom du process cherché ainsi que le temps en seconde au bout duquel je le kille.
Format du fichier de paramètres:
notepad.exe 10
kodakimg.exe 5
Voici ce que j'ai écris jusque là:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
#!/usr/local/bin/perl
# Ce script vérifie la présence d'un process en mémoire afin de le détruire
# s'il y reste plus d'une minute
use strict;
use Win32::Process;
my ($process,$start,$cpt,$temp,$longueur,$processID,$rep,$parampid,
$paramprocess);
my (@pid,@process,@temp,@parametre,@timer);
$rep ="D:\\appsserv\\admin\\kill avp32";
$paramprocess = "$rep\\param\\process.ini";
$parampid = 'D:\appsserv\admin\kill avp32\pid.txt';
mkdir "$rep\\param",0777 unless -d "$rep\\param";
# Inserre dans la liste @process le contenu du fichier $paramprocess
open (INI, "$paramprocess") or die "Impossible d'ouvrir process.ini en lecture : $!";
@parametre = <INI>;
close INI;
chomp (@parametre);
$start = 0;
while ($start<@parametre)
{
# compte en partant de la gauche le nombre de carractére contenu dans
# @process avant de rencontrer la chaine " "
$temp=index (@parametre[$start]," ",0);
# récupére la longueur complète de la chaine @servers[0] pour l'affecter à
# $longueur
$longueur = length (@parametre[$start]);
# substr permet de récupérer dans la chaine @servers[0] les x éléments définit
# par $temp en commençant au rang 0 de la chaine.
$processID = substr(@parametre[$start],0,$temp);
@process = (@process,$processID);
$processID = substr(@parametre[$start],$temp+1);
@timer = (@timer,$processID);
$start++;
}
# Pour chaque process de la liste on récupére une liste d'ID
foreach $processID (@process)
{
$temp = '"D:\appsserv\admin\kill avp32\tlist.exe"|find /I "' . $processID . '" > "' . $parampid . '"';
system(1,$temp) or die "error";
open(INFILE, "$parampid") or die "Impossible d'ouvrir pid.txt en lecture : $!";
@parametre = <INFILE>;
close (INFILE);
chomp (@parametre);
@pid = (@pid, @parametre);
} |
Je récupére donc bien 3 listes. L'une contient le nom du process, une autre la durée pour ce process enfin la troisième contenant l'ensemble des IDs.
Ce que je souhaite faire:
mettre en parrallèle le traitement de chaque process de manière à killer chaque process au bout du temps imparti.
Si vous avez des idées car mes compétances sont un peu dépassées
Merci