2010-09-22 23 views
4

J'ai un programme multithread et utilise le signal signal.signal (SIGINT, func) pour tuer tous les threads quand ctrl c est pressé. La question que j'ai est la suivante:Gestionnaire de signal, python

Je dois appeler signal.signal (...) depuis main en python. Dois-je l'appeler en boucle ou puis-je le régler une seule fois et à chaque fois que l'utilisateur appuie sur ctrl c, le signal sera capturé?

Répondre

2

Seule la bande de roulement principale peut gérer les signaux. Faites simplement tous vos threads "démoniques" (définissez la propriété .daemon de l'objet thread sur True avant de démarrer le thread) pour vous assurer que les threads se terminent lorsque le thread principal le fait.

+0

Ok, merci, mais dans le main, dois-je appeler signa.signal (SIGINT, func) dans une boucle (par exemple vrai) ou est-ce que je peux l'appeler une seule fois dans main? – Juli

+0

@Juli, juste une fois, tant que 'main' se termine à la suite de l'exécution de' func'. –

+0

vous dites que les threads '.daemon == True' seront interrompus et tués lorsque le thread principal se termine? – n611x007