著者: Nicolas Tripon 日付: CC: ML Guilde 題目: 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.