Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1215)

Unified Diff: devil/devil/utils/signal_handler.py

Issue 2505383002: [devil] Reset previous signal_handler in a finally. (Closed)
Patch Set: Add SignalHandler. Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: devil/devil/utils/signal_handler.py
diff --git a/devil/devil/utils/signal_handler.py b/devil/devil/utils/signal_handler.py
index 566bef94e93cea7db9f0b1ad2b5360e9aa35659d..1230f8df5f394efda4400e0d7a0a38b0cb3f40e9 100644
--- a/devil/devil/utils/signal_handler.py
+++ b/devil/devil/utils/signal_handler.py
@@ -7,6 +7,23 @@ import signal
@contextlib.contextmanager
+def SignalHandler(signalnum, handler):
+ """Sets the signal handler for the given signal in the wrapped context.
+
+ Args:
+ signum: The signal for which a handler should be added.
+ additional_handler: The handler to add.
+ """
+ existing_handler = signal.getsignal(signalnum)
+
+ try:
+ signal.signal(signalnum, handler)
+ yield
+ finally:
+ signal.signal(signalnum, existing_handler)
+
+
+@contextlib.contextmanager
def AddSignalHandler(signalnum, additional_handler):
"""Adds a signal handler for the given signal in the wrapped context.
@@ -24,7 +41,8 @@ def AddSignalHandler(signalnum, additional_handler):
existing_handler(signum, frame)
additional_handler(signum, frame)
- signal.signal(signalnum, handler)
- yield
- signal.signal(signalnum, existing_handler)
-
+ try:
+ signal.signal(signalnum, handler)
+ yield
+ finally:
+ signal.signal(signalnum, existing_handler)
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698