summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorJohn Estabrook <jestabro@vyos.io>2026-01-29 13:45:29 -0600
committerGitHub <noreply@github.com>2026-01-29 13:45:29 -0600
commit1af4e423a17064e3e6d87b0c5df1c01688b6551a (patch)
treead9af31411eb033c32c47659461856c46bbfa3e8 /python
parent8944d5e4aea06e0c501880204c49a32494df8966 (diff)
parentbe6607c66e3414e3549d9568bb6840eee6f801be (diff)
downloadvyos-1x-1af4e423a17064e3e6d87b0c5df1c01688b6551a.tar.gz
vyos-1x-1af4e423a17064e3e6d87b0c5df1c01688b6551a.zip
Merge pull request #4951 from c-po/broken-pipe
op-mode: T8154: fix tcpdump KeyboardInterrupt on Ctrl+C
Diffstat (limited to 'python')
-rw-r--r--python/vyos/utils/io.py11
1 files changed, 11 insertions, 0 deletions
diff --git a/python/vyos/utils/io.py b/python/vyos/utils/io.py
index 0883376d1..3efb55ddc 100644
--- a/python/vyos/utils/io.py
+++ b/python/vyos/utils/io.py
@@ -111,3 +111,14 @@ def select_entry(l: list, list_msg: str = '', prompt_msg: str = '',
select = ask_input(prompt_msg, default=default_entry, numeric_only=True,
valid_responses=valid_entry)
return next(filter(lambda x: x[0] == select, en))[1]
+
+def catch_broken_pipe(func):
+ import os
+ import sys
+ def wrapped(*args, **kwargs):
+ try:
+ func(*args, **kwargs)
+ except (BrokenPipeError, KeyboardInterrupt):
+ # Flush output to /dev/null and bail out.
+ os.dup2(os.open(os.devnull, os.O_WRONLY), sys.stdout.fileno()) # pylint: disable = no-member
+ return wrapped