Python论坛  - 讨论区

标题:[python-chinese] 如何在程序退出的时候执行一段代码

2007年01月09日 星期二 22:51

junyi sun ccnusjy在gmail.com
星期二 一月 9 22:51:38 HKT 2007

ÇëÎÊ£¬ÈçºÎÔÚ³ÌÐòÍ˳öµÄʱºòÖ´ÐÐÒ»¶Î´úÂë
ÎÒ¿ªÊ¼ÓÃÁËatexit.register(foobar)£¬ºóÀ´·¢ÏÖÕâÖ»¶ÔÕý³£ÖÕÖ¹µÄ³ÌÐò
Æð×÷Óã¬ÇëÎÊÈçºÎ²ÅÄÜ×öµ½µ±ÃüÁîÐгÌÐò±»Óû§¹Ø±Õʱ£¬³ÌÐòÔÚij¸ö
ÈÕÖ¾ÎļþÀïдÈëÒ»¶ÎÎÄ×Ö£¿

ÕæÐÄÇë½Ì£¬Ð»Ð»£¡
-------------- 下一部分 --------------
Ò»¸öHTML¸½¼þ±»ÒƳý...
URL: http://python.cn/pipermail/python-chinese/attachments/20070109/9126261a/attachment.htm 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年01月10日 星期三 10:06

fdu.xiaojf在gmail.com fdu.xiaojf在gmail.com
星期三 一月 10 10:06:50 HKT 2007

junyi sun wrote:
> 请问,如何在程序退出的时候执行一段代码
> 我开始用了atexit.register(foobar),后来发现这只对正常终止的程序
> 起作用,请问如何才能做到当命令行程序被用户关闭时,程序在某个
> 日志文件里写入一段文字?
> 真心请教,谢谢!
> ------------------------------------------------------------------------
>
>   
这个比较难吧,假如在unix上任务被直接kill -9杀掉,根本没有机会再去写日志就
退出了


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年01月10日 星期三 11:14

Leo Jay python.leojay在gmail.com
星期三 一月 10 11:14:08 HKT 2007

On 1/9/07, junyi sun <ccnusjy在gmail.com> wrote:
> 请问,如何在程序退出的时候执行一段代码
> 我开始用了atexit.register(foobar),后来发现这只对正常终止的程序
> 起作用,请问如何才能做到当命令行程序被用户关闭时,程序在某个
> 日志文件里写入一段文字?
>
> 真心请教,谢谢!
>

另起一个监视的进程,发现该进程不见了就写日志。这样会不会好一些。



-- 
Best Regards,
Leo Jay

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年01月10日 星期三 11:18

�� liuxing在nanjing-fnst.com
星期三 一月 10 11:18:23 HKT 2007

¿ÖűØÐëÒª×öÁ½¸öÊØ»¤½ø³ÌÁË¡£»¥ÏàÊØ»¤£¬ÕâÑù²ÅÄܱ£Ö¤Ð´ÏÂÈÕÖ¾£¬µ«Èç¹û·¢ÉúÈçͻȻ¶ÏµçµÈÇé¿öµÄʱºò£¬¿ÉÄÜ»¹ÊÇÎÞ·¨Ð´ÈÕÖ¾µÄ¡£
Óиö°ì·¨ÊÇÒ»Ö±²»¶ÏµÄдÈÕÖ¾£¬¼Ç¼µ±Ç°µÄÇé¿ö£¬ÕâÑùµÄ×ö·¨»¹±ØÐëÿ¸ôÒ»¶Îʱ¼ä¾Í°ÑÒÔÇ°µÄÈÕÖ¾Òª¸øÇå³ýÒ»±é¡£
----- Original Message ----- 
From: "Leo Jay" <python.leojay在gmail.com>
To: <python-chinese在lists.python.cn>
Sent: Wednesday, January 10, 2007 11:14 AM
Subject: Re: [python-chinese]ÈçºÎÔÚ³ÌÐòÍ˳öµÄʱºòÖ´ÐÐÒ»¶Î´úÂë


> On 1/9/07, junyi sun <ccnusjy在gmail.com> wrote:
>> ÇëÎÊ£¬ÈçºÎÔÚ³ÌÐòÍ˳öµÄʱºòÖ´ÐÐÒ»¶Î´úÂë
>> ÎÒ¿ªÊ¼ÓÃÁËatexit.register(foobar)£¬ºóÀ´·¢ÏÖÕâÖ»¶ÔÕý³£ÖÕÖ¹µÄ³ÌÐò
>> Æð×÷Óã¬ÇëÎÊÈçºÎ²ÅÄÜ×öµ½µ±ÃüÁîÐгÌÐò±»Óû§¹Ø±Õʱ£¬³ÌÐòÔÚij¸ö
>> ÈÕÖ¾ÎļþÀïдÈëÒ»¶ÎÎÄ×Ö£¿
>>
>> ÕæÐÄÇë½Ì£¬Ð»Ð»£¡
>>
>
> ÁíÆðÒ»¸ö¼àÊӵĽø³Ì£¬·¢Ïָýø³Ì²»¼ûÁ˾ÍдÈÕÖ¾¡£ÕâÑù»á²»»áºÃһЩ¡£
>
>
>
> -- 
> Best Regards,
> Leo Jay
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
> 




[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年01月10日 星期三 11:37

yi huang yi.codeplayer在gmail.com
星期三 一月 10 11:37:02 HKT 2007

On 1/9/07, junyi sun <ccnusjy at gmail.com> wrote:
>
> 请问,如何在程序退出的时候执行一段代码
> 我开始用了atexit.register(foobar),后来发现这只对正常终止的程序
> 起作用,请问如何才能做到当命令行程序被用户关闭时,程序在某个
> 日志文件里写入一段文字?
>
> 真心请教,谢谢!
>
>
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>

不是所有情况都能做到这一点,不过 Ctrl+C 是可以被捕获到的:
In [2]: try:
   ...:     while True:pass
   ...: except KeyboardInterrupt:
   ...:     print 'Ctrl+C'
   ...:
Ctrl+C


-- 
http://codeplayer.blogspot.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://python.cn/pipermail/python-chinese/attachments/20070110/1cdeddf6/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年01月10日 星期三 11:45

Leo Jay python.leojay在gmail.com
星期三 一月 10 11:45:20 HKT 2007

On 1/10/07, yi huang <yi.codeplayer在gmail.com> wrote:
>
> 不是所有情况都能做到这一点,不过 Ctrl+C 是可以被捕获到的:
> In [2]: try:
>    ...:     while True:pass
>    ...: except KeyboardInterrupt:
>    ...:     print 'Ctrl+C'
>    ...:
> Ctrl+C
>

Ctrl+Break不能被捕获到。


-- 
Best Regards,
Leo Jay

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年01月10日 星期三 11:45

IQDoctor huanghao.c在gmail.com
星期三 一月 10 11:45:49 HKT 2007

没有办法, 如果kill -s 9,
你的进程会被 SIGKILL 信号直接 kill 掉, 因为 SIGKILL 是无法劫获的.

不过你可以在进程里随时记录当前状态写如日志.

junyi sun 写道:
> 请问,如何在程序退出的时候执行一段代码
> 我开始用了atexit.register(foobar),后来发现这只对正常终止的程序
> 起作用,请问如何才能做到当命令行程序被用户关闭时,程序在某个
> 日志文件里写入一段文字?
> 真心请教,谢谢!
> ------------------------------------------------------------------------
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年01月10日 星期三 11:56

Gang Li hailang_0512在163.com
星期三 一月 10 11:56:08 HKT 2007

按照你的需求好像只能这样子做了.强烈同意Leo Jay!

> On 1/9/07, junyi sun <ccnusjy在gmail.com> wrote:
>> 请问,如何在程序退出的时候执行一段代码
>> 我开始用了atexit.register(foobar),后来发现这只对正常终止的程序
>> 起作用,请问如何才能做到当命令行程序被用户关闭时,程序在某个
>> 日志文件里写入一段文字?
>>
>> 真心请教,谢谢!
>>
> 
> 另起一个监视的进程,发现该进程不见了就写日志。这样会不会好一些。

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年01月10日 星期三 15:11

junyi sun ccnusjy在gmail.com
星期三 一月 10 15:11:15 HKT 2007

лл´ó¼ÒµÄÈÈÐÄ°ïÖú£¬ÎÒ»¹ÊDzÉȡÿ¸öÒ»¶Îʱ¼ä¾ÍдÈëÎļþµÄ·½°¸°É¡£

On 1/10/07, IQDoctor <huanghao.c在gmail.com> wrote:
>
> ûÓа취, Èç¹ûkill -s 9,
> ÄãµÄ½ø³Ì»á±» SIGKILL ÐźÅÖ±½Ó kill µô, ÒòΪ SIGKILL ÊÇÎÞ·¨½Ù»ñµÄ.
>
> ²»¹ýÄã¿ÉÒÔÔÚ½ø³ÌÀïËæʱ¼Ç¼µ±Ç°×´Ì¬Ð´ÈçÈÕÖ¾.
>
> junyi sun дµÀ:
> > ÇëÎÊ£¬ÈçºÎÔÚ³ÌÐòÍ˳öµÄʱºòÖ´ÐÐÒ»¶Î´úÂë
> > ÎÒ¿ªÊ¼ÓÃÁËatexit.register(foobar)£¬ºóÀ´·¢ÏÖÕâÖ»¶ÔÕý³£ÖÕÖ¹µÄ³ÌÐò
> > Æð×÷Óã¬ÇëÎÊÈçºÎ²ÅÄÜ×öµ½µ±ÃüÁîÐгÌÐò±»Óû§¹Ø±Õʱ£¬³ÌÐòÔÚij¸ö
> > ÈÕÖ¾ÎļþÀïдÈëÒ»¶ÎÎÄ×Ö£¿
> > ÕæÐÄÇë½Ì£¬Ð»Ð»£¡
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > python-chinese
> > Post: send python-chinese在lists.python.cn
> > Subscribe: send subscribe to python-chinese-request在lists.python.cn
> > Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> > Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
-------------- 下一部分 --------------
Ò»¸öHTML¸½¼þ±»ÒƳý...
URL: http://python.cn/pipermail/python-chinese/attachments/20070110/40ddf84c/attachment.htm 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年01月11日 星期四 15:26

fdu.xiaojf在gmail.com fdu.xiaojf在gmail.com
星期四 一月 11 15:26:09 HKT 2007

junyi sun wrote:
> 请问,如何在程序退出的时候执行一段代码
> 我开始用了atexit.register(foobar),后来发现这只对正常终止的程序
> 起作用,请问如何才能做到当命令行程序被用户关闭时,程序在某个
> 日志文件里写入一段文字?
> 真心请教,谢谢!
> ------------------------------------------------------------------------
过一段时间就把当前信息保存,作为一个restart文件,文件里的信息要足够下次启
动的时候从该处继续.
下次启动的时候假如发现有restart文件,就可以选择是否从上次的任务继续或者是
重新开始.我在用的
一个大型软件就是这样做的.

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号