65 lines
1.8 KiB
C
65 lines
1.8 KiB
C
/* ************************************************************************** */
|
|
/* */
|
|
/* ::: :::::::: */
|
|
/* signals.c :+: :+: :+: */
|
|
/* +:+ +:+ +:+ */
|
|
/* By: tordner <[email protected]> +#+ +:+ +#+ */
|
|
/* +#+#+#+#+#+ +#+ */
|
|
/* Created: 2025/01/27 00:00:00 by lfirmin #+# #+# */
|
|
/* Updated: 2025/06/02 01:05:49 by tordner ### ########.fr */
|
|
/* */
|
|
/* ************************************************************************** */
|
|
|
|
#include "../../includes/minishell.h"
|
|
|
|
int g_signal = 0;
|
|
|
|
void if_sigint(int sig)
|
|
{
|
|
g_signal = 128 + sig;
|
|
rl_done = 1;
|
|
}
|
|
|
|
void set_status_if_signal(t_shell *shell)
|
|
{
|
|
shell->exit_status = g_signal;
|
|
g_signal = 0;
|
|
}
|
|
|
|
void set_signal_child(void)
|
|
{
|
|
rl_event_hook = sig_event;
|
|
signal(SIGQUIT, SIG_DFL);
|
|
signal(SIGINT, SIG_DFL);
|
|
signal(SIGTSTP, SIG_IGN);
|
|
}
|
|
|
|
void set_signal_parent_exec(void)
|
|
{
|
|
struct sigaction sa;
|
|
struct sigaction sb;
|
|
|
|
rl_event_hook = sig_event;
|
|
ft_memset(&sa, 0, sizeof(sa));
|
|
sa.sa_handler = handle_signal_parent;
|
|
sa.sa_flags = SA_RESTART;
|
|
sigaction(SIGINT, &sa, NULL);
|
|
ft_memset(&sb, 0, sizeof(sb));
|
|
sb.sa_handler = handle_signal_parent;
|
|
sb.sa_flags = SA_RESTART;
|
|
sigaction(SIGQUIT, &sb, NULL);
|
|
}
|
|
|
|
void set_signal_parent(void)
|
|
{
|
|
struct sigaction sa;
|
|
|
|
rl_event_hook = sig_event;
|
|
ft_memset(&sa, 0, sizeof(sa));
|
|
sa.sa_handler = if_sigint;
|
|
sa.sa_flags = SA_RESTART;
|
|
sigaction(SIGINT, &sa, NULL);
|
|
signal(SIGQUIT, SIG_IGN);
|
|
signal(SIGTSTP, SIG_IGN);
|
|
}
|