Maison > Questions et réponses > le corps du texte
Problème :
Lire du texte pour générer une liste. list.pop() pendant l'exécution du programme. Maintenant, je veux demander si je peux réécrire les valeurs de la liste dans le texte en sortant anormalement.
Exception :
Ctrl-c, tuer, Ctrl-z
Merci !
PHPz2017-05-18 10:55:50
Les situations anormales que vous avez mentionnées sont toutes causées par le programme recevant le signal correspondant et effectuant l'action par défaut (sortie), vous pouvez donc éviter que le programme ne se termine anormalement en enregistrant le signal et en modifiant l'action par défaut
.注册信号, 改变默认动作
来避免程序异常退出.
import signal
import time
def hander(signum, frame):
# 接受到信号后你想做的事
print signum, frame
signal.signal(signal.SIGTERM, hander) # 捕获kill : SIGTERM信号
signal.signal(signal.SIGINT, hander) # 捕获Ctrl-c: SIGTERM 信号(可以绑定不同的函数)
signal.signal(signal.SIGTSTP, hander) # 捕获 Ctrl-z: SIGTSTP信号(可以绑定不同的函数)
while 1:
time.sleep(1)
经过上面的signal
将对应的信号动作绑定到hander函数
, 在接受到Ctrl-c , kill , Ctrl-z都能分别执行handler
的代码了, 至于想怎么实现, 可以自定义, 如果除了这些信号意外的情况, 得示其他情况而决定采取什么措施! 可以学习下python signal
rrreee
fonction hander
via le signal
ci-dessus Après avoir reçu Ctrl-c, kill et Ctrl-z, le handler peut être exécuté. respectivement. Le code de
. Quant à la façon de l'implémenter, vous pouvez le personnaliser. S'il y a des situations inattendues autres que ces signaux, vous déciderez des mesures à prendre s'il y a d'autres situations. code>signal python (Certains signaux ne peuvent pas être capturés, ceci est déterminé par le système, veuillez faire attention)🎜ringa_lee2017-05-18 10:55:50
Vous pouvez essayer d'attraper l'exception dans if main :
if __name__ == '__main__':
try:
main()
except e:
solve()
怪我咯2017-05-18 10:55:50
Il existe une fonction en Python appelée atexit, qui rappelle lorsque le programme se termine. Les sorties générales peuvent être capturées.