Re: Timeout

Page principale

Répondre à ce message
Auteur: Nicolas Tripon
Date:  
CC: ML Guilde
Sujet: Re: Timeout
>Est-il possible, à partir d'un script shell, de faire exécuter un
>programme, et, au cas où celui-ci reste bloqué, de stopper son exécution ?
>Lui mettre un timeout externe, quoi...


set -m
(
(sleep 5 ; kill 0) & # timeout

sleep 10 # programme
kill 0
)
set +m

Le problème avec les solutions qui prennent le pid d'un processus pour
le tuer après un certain temps, c'est que le processus pourrait avoir
disparu bien avant ; ce qui n'est pas grave si un autre processus du même
pid n'a été crée entre temps. On pourrait dire : 'la probabilité est
faible pour que ce soit le cas'. Oui, mais pas nulle. Dans la solution
plus haut, on envoit un signal au groupe de processus du sous-shell entre
'(' et ')' ; comme le signal est envoyé depuis l'intérieur, ce groupe
n'est jamais vide : on ne peut pas viser un processus étranger.

-Nicolas