Gestion d'un processus avec timeout - Perl - Programmation
Marsh Posté le 30-05-2008 à 14:16:11
Bon, à défaut de réponse et vu que c'est assez pressé, j'ai utilisé une autre méthode. Pas propre il est vrai, mais fonctionnelle (je n'ai pas trouvé de faille, même je ne doute pas qu'il y en ait une).
Donc l'idée est qu'un script A gère le lot, et appelle un script perl B, via la commande system.
Voici le contenu du script B (avec commentaire de debuggage non retirés) :
Code :
|
Je vais utiliser ce script dès cet après-midi, mais je reste ouvert à toute évolution, donc ne vous privez pas
Marsh Posté le 30-05-2008 à 15:41:30
L'autre jour j'ai eu le même problème, je sais pas pourquoi, je m'en sortais pas avec l'alarm, ça bloquait souvent pour une raison que je n'ai pas réussi à déterminer. donc au final j'ai fait une méthode ou je lance un autre processus pour tuer l'autre.
Code :
|
Marsh Posté le 30-05-2008 à 11:43:15
Bonjour,
J'ai un problème en Perl que je n'arrive pas à résoudre.
J'ai besoin de lancer une commande (en fait mon script perl gère un lot et lance la commande en séquence sur chaque élément du lot), et de l'arrêter si elle prend trop de temps.
J'ai creusé plusieurs méthodes, donc la plus "propre" semble être l'utilisation de alarm et die, mais ça ne marche pas dans mon cas.
Voici le code de "test" de la méthode, modifiée pour mon usage, à partir du code qu'on peut trouver un peu partout sur le net :
Au final, seule la première commande est exécutée (les lignes 28 et 29). Elle dépasse le timeout, mais n'est pas arrêtée... Les lignes suivantes (30 et +) ne sont jamais exécutées.
Quelqu'un pourrait m'expliquer ?
J'ai aussi regardé du côté de "ulimit" en bash/sh et "limit cputime" en csh/tcsh, mais je me trouve face à un comportement étrange, et surtout, des impossibilité de changer les valeurs... De plus comme c'est dépendant du shell, j'ai moins confiance.
Merci de m'aider
Message édité par Predicator le 30-05-2008 à 11:45:10