[pacman-dev] [PATCH 1/1] signhandler: add SIGQUIT soft_interrupt_handler
Eli Schwartz
eschwartz at archlinux.org
Sun May 9 12:10:17 UTC 2021
On 4/7/21 6:47 AM, ZheNing Hu wrote:
> When we downloading with pacman. If we want to
> stop downloading, use `Ctrl +C` can exit normally,
> and "Interrupt signal received" will be print
> on the terminal. But if we accidentally use
> `Ctrl + \` to exit the download, it's not quite
> so perfect. The program exits with a segment
> fault, the database lock file was not deleted
> in time. The next time we use pacman downloading,
> the error will appear.
>
> So we can add signal handler with SIGQUIT, just
> like we did with SIGINT and SIGHUP. This way the
> user doesn't have to delete lock file manually.
The entire point of SIGQUIT is to let users kill a program in such a way
that it produces a coredump. "You can think of this as a program error
condition 'detected' by the user."
I'm curious how one might accidentally do this.
> Signed-off-by: ZheNing Hu <adlternative at gmail.com>
> ---
> src/pacman/sighandler.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/src/pacman/sighandler.c b/src/pacman/sighandler.c
> index ff54dce8..9fdbf917 100644
> --- a/src/pacman/sighandler.c
> +++ b/src/pacman/sighandler.c
> @@ -81,15 +81,18 @@ void install_soft_interrupt_handler(void)
> new_action.sa_flags = SA_RESTART;
> sigemptyset(&new_action.sa_mask);
> sigaddset(&new_action.sa_mask, SIGINT);
> + sigaddset(&new_action.sa_mask, SIGQUIT);
> sigaddset(&new_action.sa_mask, SIGHUP);
>
> sigaction(SIGINT, &new_action, NULL);
> + sigaction(SIGQUIT, &new_action, NULL);
> sigaction(SIGHUP, &new_action, NULL);
> }
>
> void remove_soft_interrupt_handler(void)
> {
> _reset_handler(SIGINT);
> + _reset_handler(SIGQUIT);
> _reset_handler(SIGHUP);
> }
>
>
--
Eli Schwartz
Bug Wrangler and Trusted User
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <https://lists.archlinux.org/pipermail/pacman-dev/attachments/20210509/0efb179e/attachment.sig>
More information about the pacman-dev
mailing list