Script appelant un autre... [RESOLU] - Perl - Programmation
Marsh Posté le 17-05-2005 à 11:57:18
C'est bon j'ai trouvé ... j'ai même honte d'avoir demander :$
il suffit de faire dans mon premier scritp
Code :
|
il y aussi la possibilité de faire :
Code :
|
Marsh Posté le 17-05-2005 à 12:21:14
Et tu peux également utiliser qx//, ou aussi les "apostrophes inversées" (caractère ` = ALT-GR + 7)
Sachant qu'il y a des petites subtilités concernant les différents modes d'exécution.
Ainsi :
exec(commande) remplace le programme courant. Ce qui signifie qu'un exec() qui réussit ne revient jamais au script PERL. Ce dernier est arrêté.
system(commande) duplique (fork) le processus courant avant l'exécution de commande, et attend que cette exécution se termine avant de poursuivre l'exécution du script PERL. C'est comme un exec() qui ne quitte pas le script, en somme.
exec() et system() retournent le code retour de commande. Ces deux fonctions ne permettent pas d'intercepter les sorties. C'est à ça que sert qx/commande/ (ou son équivalent `commande`).
Note que tu peux aussi utiliser la commande open() en conjonction avec les pipes (car. '|' ).
Marsh Posté le 17-05-2005 à 13:59:03
pour lancer un script externe, tu peux aussi utiliser do:
Code :
|
par rapport à un exec ou un system l'avantage est qu'on ne lance pas un deuxieme interpreteur. On peut meme lire/ecrire les memes variables.
Dans tous les cas ca n'est pas bon signe au niveau du design. Mieux vaut essayer de gerer ce genre de chose avec des packages.
Marsh Posté le 17-05-2005 à 15:25:06
Oui je le sais bien, le truc c'est que c'est une première approche. Mais le package étant bien plus pratique sera mis en place d'ici peu, merci en tout cas à vous deux
Marsh Posté le 27-05-2005 à 11:59:29
Alors juste un petit complément!!!
j'ai un cgi qui lance grace a system(commande) un script.pl sur mon sever après le lancement je récupère le PID que je stock dans un fichier. Aprés un autre script CGI récupère le PID et me kill -9 mon script.pl.
Je voulais juste savoir si ma démarche tient la route ou si il y a un moyenne plus élégant de faire ça!!
Marsh Posté le 27-05-2005 à 12:08:20
Citation : Aprés un autre script CGI récupère le PID et me kill -9 mon script.pl. |
C'est horrible.
Déjà le -9 n'est pas obligatoire. Pas sûr que tu aies besoin d'un SIGKILL pour stopper ton script.
En plus, ton architecture me semble bizarre. Pourquoi ton script.pl a-t'il besoin d'être tué ? Tu peux pas lui donner une condition d'arrêt ?
Marsh Posté le 27-05-2005 à 13:11:48
Alors c'est un coté de la prog perl que je n'est jamais explorer je t'explique exactement la finalitée de la chose!
mon script.pl qui est sur mon serveur lancer des requettes SNMP a intervale régulier. il faudrait que ce script puisse etre démarrer avec comme param l'interval de mesure et aussi qu'il puisse etre stopé et tout ça depuis l'interface web.
un autre truc aussi comment fairais tu pour que mon script.pl soit lancer a intervale régulier?
Marsh Posté le 27-05-2005 à 15:50:54
mc40 a écrit : Alors c'est un coté de la prog perl que je n'est jamais explorer je t'explique exactement la finalitée de la chose! |
tu ne le "lance pas" à interval régulier, tu le lance 1 fois et le fait boucler jusqu'à ce que tu rencontre une condition X
Marsh Posté le 28-05-2005 à 01:33:46
Oui merci ça je sais met le truc c'est comment envoyer des paramètres a un script qui est deja lancé!!!
Moi je sais pas si vous pouvez m'expliciter tout ça SVP!!
Marsh Posté le 28-05-2005 à 22:14:26
ca sfait pas vraiment envoyer des paramêtre à un script en exécution
Marsh Posté le 30-05-2005 à 11:14:13
comment je peut faire au mieux!!! alors déantologiquement parlant?
Marsh Posté le 30-05-2005 à 11:45:28
le mieux dans ce cas c'est de faire de la vraie communication inter process. regarde perlipc (google).
sinon tu a toujours la solution du bon vieux fichier que tu check (avec des locks). tu peux aussi passer par une base de donnée simple genre berclay ou sqlite.
Marsh Posté le 30-05-2005 à 12:49:04
Oui alors la!! J'avoue que ça me dépasse!!! Je vais voir perlipc!!
Merci pospos.
Marsh Posté le 30-05-2005 à 13:52:06
heuuu encore un truc!!
lorsque j'appel ma lib SNMP_utils j'ai des erreurs qui sont normales mais j'aimerai ne pas les voir s'afficher sur ma page html il me semble que c'est une option à rajouter à la fin de #! c:\perl\bin\perl.exe -? mais laquelle??
Marsh Posté le 17-05-2005 à 11:41:32
Bonjour,
Voilà j'ai deux scripts Perl et j'aimerais que l'un deux appelle l'autre durant l'execution.
Ce ne sont pas des modules donc pas possible de faire d'appel avec ::
Quelqu'un aurait-il une idée ?
Merci d'avance.
Message édité par babar9160 le 27-05-2005 à 13:34:53