From 0b031c050e049d7bdab459b48f574e8b0048926d Mon Sep 17 00:00:00 2001 From: Charles Cabergs Date: Wed, 7 Oct 2020 15:10:16 +0200 Subject: Added signal on pipeline and operations --- src/signal.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) (limited to 'src/signal.c') diff --git a/src/signal.c b/src/signal.c index 5d87d85..a0633fc 100644 --- a/src/signal.c +++ b/src/signal.c @@ -6,21 +6,24 @@ /* By: charles +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/07/16 09:16:16 by charles #+# #+# */ -/* Updated: 2020/09/16 16:27:30 by charles ### ########.fr */ +/* Updated: 2020/10/07 15:02:56 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ -#include "minishell.h" #include "eval.h" +#include "minishell.h" -void signal_sigint(int signum) +void signal_sigint(int signum) { (void)signum; - g_state.last_status = 130; + if (g_state.killed || g_state.is_child) + return ; if (g_child_pid != -1) { - kill(g_child_pid, SIGINT); - ft_putchar('\n'); + g_state.last_status = 1; + if (kill(g_child_pid, SIGINT) != -1) + ft_putchar('\n'); + g_state.killed = true; } else { @@ -29,19 +32,20 @@ void signal_sigint(int signum) } } -void signal_sigquit(int signum) +void signal_sigquit(int signum) { + if (g_state.killed) + return ; (void)signum; - g_state.last_status = 131; if (g_child_pid != -1) { + g_state.last_status = 131; kill(g_child_pid, SIGQUIT); ft_putstr("Quit (core dumped)\n"); } } -void signal_sigterm(int signum) +void signal_sigterm(int signum) { (void)signum; } - -- cgit