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
handler
to the identifier and not the actual exit-handler. The exit-handler can then be unregistered with:atexit.unregister(handler)
This function is thread safe.