pwnlib.atexit — Replacement for atexit¶
Replacement for the Python standard library’s atexit.py.
Whereas the standard atexit module only defines atexit.register(),
this replacement module also defines unregister().
This module also fixes a the issue that exceptions raised by an exit handler is
printed twice when the standard atexit is used.
-
pwnlib.atexit.register(func, *args, **kwargs)[source]¶ Registers a function to be called on program termination. The function will be called with positional arguments args and keyword arguments kwargs, i.e.
func(*args, **kwargs). The current context is recorded and will be the one used when the handler is run.E.g. to suppress logging output from an exit-handler one could write:
with context.local(log_level = 'error'): atexit.register(handler)
An identifier is returned which can be used to unregister the exit-handler.
This function can be used as a decorator:
@atexit.register def handler(): ...
Notice however that this will bind
handlerto the identifier and not the actual exit-handler. The exit-handler can then be unregistered with:atexit.unregister(handler)
This function is thread safe.