git-style registered tempfiles that are removed upon typical termination signals.
This crate installs signal handlers the first time its facilities are used.
These are powered by [signal-hook
] to get notified when the application is told to shut down
using signals to assure these are deleted. The deletion is filtered by process id to allow forks to have their own
set of tempfiles that won't get deleted when the parent process exits.
As typical handlers for TERMination
are installed on first use and effectively overriding the defaults, we install
default handlers to restore this behaviour. Whether or not to do that can be controlled using [force_setup()
].
Note
Applications setting their own signal handlers on termination to abort the process probably want to be called after the ones of this crate
can call [force_setup()
] before installing their own handlers.
By default, our signal handlers will emulate the default behaviour and abort the process after cleaning temporary files.
For full control the application can also prevent our handler to be installed and call it themselves from their own signal handlers.
Limitations
Tempfiles might remain on disk
- Uninterruptible signals are received like
SIGKILL
- The application is performing a write operation on the tempfile when a signal arrives, preventing this tempfile to be removed, but not others. Any other operation dealing with the tempfile suffers from the same issue.