[python] sigint

Visgean Skeloru visgean na gmail.com
Úterý Leden 25 19:26:33 CET 2011


Podle mně tu:
http://docs.python.org/library/exceptions.html#exceptions.SystemExit ale
nejsem si tím zas až tak jistý, na linuxu to je třeba tak že když program
běží a uživatel zavře emulátor terminálu (gnome-terminal) tak mu to hodí
hlášku "V tomto terminálu stále běží nějaký proces. Zavřením terminálu jej
ukončí." Obávám se že když se zavře okno tímhle stylem tak je proces spíše
zabit než že by byl zavolán sys.exit...

2011/1/25 <geon na post.cz>

> Díky, funguje. A dá se ve win odchytit i zavření okna, kde běží
> pythonovský script?
>
>
> Hynek Fabian napsal(a), dne 25.1.2011 11:36:
> > ^C ma  defaultni handler, odchyt vyjimku KeyboardInterrupt.
> > Btw delat v kontextu signal handleru blokujici operace neni moc dobrej
> napad.
> >
> > geon na post.cz (Tuesday 25 January 2011 06:37:51):
> >> Ahoj,
> >>
> >> v jedné části programu kopíruji soubory (obvykle velké) a chci mít
> >> zajištěno, že když dám ctrl+c tak že v cíli nezbude jen část souboru -
> >> chci zajistit jeho smazání přes odchycení sigint:
> >>
> >> def signal_handler(signal, frame):
> >>         print 'You pressed Ctrl+C!'
> >>         print dest
> >>         if os.path.isdir(item):
> >>                 shutil.rmtree(dest)
> >>         if os.path.isfile(item):
> >>                 os. remove(dest)
> >>         sys.exit(0)
> >>
> >> signal.signal(signal.SIGINT, signal_handler)
> >>
> >> toto ale nefunguje, protože cíl je asi stále otevřen původním procesem
> >> kopírování. Díky za rady jak z toho ven.
> >>
> >> You pressed Ctrl+C!
> >> xyz.mkv
> >> Traceback (most recent call last):
> >>   File "D:\Zaloha\W7610034.py", line 48, in <module>
> >>     shutil.copy(item, dest)
> >>   File "C:\prg\Python26\lib\shutil.py", line 88, in copy
> >>     copyfile(src, dst)
> >>   File "C:\prg\Python26\lib\shutil.py", line 54, in copyfile
> >>     copyfileobj(fsrc, fdst)
> >>   File "C:\prg\Python26\lib\shutil.py", line 30, in copyfileobj
> >>     fdst.write(buf)
> >>   File "D:\Zaloha\W7610034.py", line 11, in signal_handler
> >>     os. remove(dest)
> >> WindowsError: [Error 32] Proces nemß p°Ýstup k souboru, neboŁ jej prßvý
> >> vyu×Ývß
> >> jinř proces: 'xyz.mkv'
> >>
> >>
> >>
> >> xpsp3, py2.x
> >>
> >> Díky
> >> geon
> >> Pavel Kosina
> >>
> >>
> >>
> >>
> >> _______________________________________________
> >> Python mailing list
> >> Python na py.cz
> >> http://www.py.cz/mailman/listinfo/python
> > _______________________________________________
> > Python mailing list
> > Python na py.cz
> > http://www.py.cz/mailman/listinfo/python
> >
>
>
> --
> Náhodný citát:
> Přátelství mezi mužem a ženou nemůže existovati jako prvotní cit.
>                -- Lawrence
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://www.py.cz/pipermail/python/attachments/20110125/aa514235/attachment.html>


Další informace o konferenci Python