Re: [PATCH v2 03/17] tools/kvm_stat: handle SIGINT in log and batch modes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



2017-03-10 13:40+0100, Stefan Raspl:
> SIGINT causes ugly unhandled exceptions in log and batch mode, which we
> prevent by catching the exceptions accordingly.
> 
> Signed-off-by: Stefan Raspl <raspl@xxxxxxxxxxxxxxxxxx>
> Reviewed-by: Marc Hartmayer <mhartmay@xxxxxxxxxxxxxxxxxx>
> ---

The interactive mode also gets

  Exception KeyboardInterrupt in <bound method Event.__del__ of <__main__.Event object at 0x7f09a3c2cd50>> ignored

If you press ^C twice fast :)

>  tools/kvm/kvm_stat/kvm_stat | 28 +++++++++++++++++-----------
>  1 file changed, 17 insertions(+), 11 deletions(-)
> 
> diff --git a/tools/kvm/kvm_stat/kvm_stat b/tools/kvm/kvm_stat/kvm_stat
> index ef47ad7..14536c0 100755
> --- a/tools/kvm/kvm_stat/kvm_stat
> +++ b/tools/kvm/kvm_stat/kvm_stat
> @@ -969,12 +969,15 @@ class Tui(object):
>  
>  def batch(stats):
>      """Prints statistics in a key, value format."""
> -    s = stats.get()
> -    time.sleep(1)
> -    s = stats.get()
> -    for key in sorted(s.keys()):
> -        values = s[key]
> -        print '%-42s%10d%10d' % (key, values[0], values[1])
> +    try:
> +        s = stats.get()
> +        time.sleep(1)
> +        s = stats.get()
> +        for key in sorted(s.keys()):
> +            values = s[key]
> +            print '%-42s%10d%10d' % (key, values[0], values[1])
> +    except KeyboardInterrupt:
> +        pass
>  
>  def log(stats):
>      """Prints statistics as reiterating key block, multiple value blocks."""
> @@ -991,11 +994,14 @@ def log(stats):
>      line = 0
>      banner_repeat = 20
>      while True:
> -        time.sleep(1)
> -        if line % banner_repeat == 0:
> -            banner()
> -        statline()
> -        line += 1
> +        try:
> +            time.sleep(1)
> +            if line % banner_repeat == 0:
> +                banner()
> +            statline()
> +            line += 1
> +        except KeyboardInterrupt:
> +            break
>  
>  def get_options():
>      """Returns processed program arguments."""
> -- 
> 2.8.4
> 



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux