Comment puis-je spécifier le délai limite pour le Perl appel système?
Parfois mon système d'appel va dans une interminable de l'état. Pour, éviter que je veux être en mesure de sortir de l'appel après un laps de temps spécifié.
Est-il un moyen de spécifier un délai limite pour system
?
system("command", "arg1", "arg2", "arg3");
Je veux le délai d'attente pour être mis en œuvre à partir de l'intérieur du code Perl pour la portabilité, et non pas à l'aide de certains OS des fonctions spécifiques comme ulimit.
- C'est un double de plus de fois que je peux compter: stackoverflow.com/questions/2679582/... stackoverflow.com/questions/1962985/... stackoverflow.com/questions/2423288/ways-to-do-timeouts-in-perl stackoverflow.com/questions/3427401/... stackoverflow.com/questions/1165316/... sont que quelques-uns.
Vous devez vous connecter pour publier un commentaire.
Voir le
alarme
fonction. Exemple de pod:Il existe des modules sur CPAN qui encapsuler ces un peu plus gentiment, pour exemple:
Temps::Out
fork
au lieu desystem
. Jetez un oeil à des modules comme IPC::Cmd & IPC::Run pour rendre cela plus facile (dans ce contexte).Vous pouvez utiliser IPC::Run's de la méthode run au lieu de système. et de définir un délai d'attente.
Comment sur Système::Délai D'Attente ?
J'ai simplement utilisé le
timeout
commande Perl + Linux avant, quelque chose que vous pouvez tester comme ceci:Sortie après 4.317 secondes:
La
timeout
commande est partie de tous les grands "normal" distributions Linux un.f.un.j'.k, une partie de coreutils.