[python] sigint

Hynek Fabian hynek.fabian na firma.seznam.cz
Úterý Leden 25 19:45:27 CET 2011


V *nixu emulator terminalu pri zavirani posle SIGHUP
Defaultni akce je ukonceni procesu coz by v pythonu melo 
vystrelit vyjimku SystemExit (IMO, nezkousel jsem to)

geon na post.cz (Tuesday 25 January 2011 19:15:12):
> 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


Další informace o konferenci Python