Source code for libdebug.utils.signal_utils

#
# This file is part of libdebug Python library (https://github.com/libdebug/libdebug).
# Copyright (c) 2024 Gabriele Digregorio. All rights reserved.
# Licensed under the MIT license. See LICENSE file in the project root for details.
#

import functools
import signal


[docs] @functools.cache def create_signal_mappings() -> tuple[dict, dict]: """Create mappings between signal names and numbers.""" signal_to_number = {} number_to_signal = {} for name in dir(signal): if name.startswith("SIG") and not name.startswith("SIG_"): number = getattr(signal, name) signal_to_number[name] = number number_to_signal[number] = name return signal_to_number, number_to_signal
[docs] @functools.cache def resolve_signal_number(name: str) -> int: """Resolve a signal name to its number. Args: name (str): the signal name. Returns: int: the signal number. """ signal_to_number, _ = create_signal_mappings() try: return signal_to_number[name] except KeyError as e: raise ValueError(f"Signal {name} not found.") from e
[docs] @functools.cache def resolve_signal_name(number: int) -> str: """Resolve a signal number to its name. Args: number (int): the signal number. Returns: str: the signal name. """ _, number_to_signal = create_signal_mappings() try: return number_to_signal[number] except KeyError as e: raise ValueError(f"Signal {number} not found.") from e
[docs] @functools.cache def get_all_signal_numbers() -> list: """Get all the signal numbers. Returns: list: the list of signal numbers. """ _, number_to_signal = create_signal_mappings() return list(number_to_signal.keys())