45 lines
1.5 KiB
Diff
45 lines
1.5 KiB
Diff
diff -up iotop-0.6/iotop/ui.py.noendcurses iotop-0.6/iotop/ui.py
|
|
--- iotop-0.6/iotop/ui.py.noendcurses 2014-12-03 17:50:38.941430261 +0100
|
|
+++ iotop-0.6/iotop/ui.py 2014-12-03 17:51:40.108064465 +0100
|
|
@@ -488,10 +488,14 @@ class IOTopUI(object):
|
|
self.win.refresh()
|
|
|
|
def run_iotop_window(win, options):
|
|
+ global terminating
|
|
+ terminating = False
|
|
if options.batch:
|
|
signal.signal(signal.SIGPIPE, signal.SIG_DFL)
|
|
else:
|
|
def clean_exit(*args, **kwargs):
|
|
+ global terminating
|
|
+ terminating = True
|
|
sys.exit(0)
|
|
signal.signal(signal.SIGINT, clean_exit)
|
|
signal.signal(signal.SIGTERM, clean_exit)
|
|
@@ -499,6 +503,7 @@ def run_iotop_window(win, options):
|
|
process_list = ProcessList(taskstats_connection, options)
|
|
ui = IOTopUI(win, process_list, options)
|
|
ui.run()
|
|
+ terminating = True
|
|
|
|
def run_iotop(options):
|
|
try:
|
|
@@ -520,6 +525,17 @@ Please do not file bugs on iotop about t
|
|
sys.exit(1)
|
|
else:
|
|
raise
|
|
+ except curses.error as e:
|
|
+ stre = str(e)
|
|
+ if terminating and stre.find('ERR')>=0 and (
|
|
+ stre.find('nocbreak()')>=0 or stre.find('endwin()')>=0
|
|
+ ):
|
|
+ pass
|
|
+ # endwin and nocbreak can cause error (and raise hard to catch
|
|
+ # exception) if iotop was running in the terminal and that
|
|
+ # terminal got closed while iotop was still running
|
|
+ else:
|
|
+ raise
|
|
|
|
#
|
|
# Profiling
|