2016-02-03 1 views
0

Je souhaite lire une vidéo en utilisant vlc dans une boucle jusqu'à ce qu'une opération soit terminée. Mes pensées serait de faire quelque chose comme ceci:Est-il acceptable d'utiliser "kill" comme moyen standard de mettre fin aux processus?

vlc -f --loop loopvideo.mpg 
[do some other stuff] 
if (finished) 
    killall vlc 
fi 

venant des fenêtres à l'origine, je sens encore que tuer un processus est quelque chose de mal, vous ne le faites quand quelque chose est écrasé. Y a-t-il une approche "plus propre" sur les systèmes * Nix que la commande "kill" ou est-ce bien?

+1

En cas d'exécution dans une boucle infinie, je ne vois pas d'autre moyen légitime d'empêcher le processus de fonctionner. –

Répondre

3

kill est bien, par défaut, il devrait envoyer un signal au processus pour lui demander de se terminer. Vous pouvez être sûr de cela en utilisant killall -s TERM vlc si vous le souhaitez. Le processus devrait intercepter le signal et se fermer avec élégance.

Vraiment tuer un processus, vous devez envoyer un KILL plutôt que TERM. Ce signal est envoyé au système d'exploitation plutôt que le processus, de sorte que l'O/S va effectivement arrêter le processus sans attendre le processus de nettoyage. Vous avez peut-être vu cette commande dans sa forme la plus courte de kill -9 <pid> où = -KILL

+0

SIGKILL est envoyé au processus, comme n'importe quel autre signal. La seule différence est que le processus ne peut pas gérer SIGKILL, donc vous êtes assuré d'obtenir la réponse par défaut (terminaison) et vous ne donnez au processus aucune chance de nettoyer les ressources qu'il pourrait encore utiliser. –