diff options
| author | Charles Cabergs <me@cacharle.xyz> | 2020-10-07 15:10:16 +0200 |
|---|---|---|
| committer | Charles Cabergs <me@cacharle.xyz> | 2020-10-07 15:10:16 +0200 |
| commit | 0b031c050e049d7bdab459b48f574e8b0048926d (patch) | |
| tree | 74eee3347c88daced8db318a2ce30e899533acd0 /src/signal.c | |
| parent | 38630279546fbd3876fe2396f2afe4ca1bca9acc (diff) | |
| download | minishell-0b031c050e049d7bdab459b48f574e8b0048926d.tar.gz minishell-0b031c050e049d7bdab459b48f574e8b0048926d.tar.bz2 minishell-0b031c050e049d7bdab459b48f574e8b0048926d.zip | |
Added signal on pipeline and operations
Diffstat (limited to 'src/signal.c')
| -rw-r--r-- | src/signal.c | 24 |
1 files changed, 14 insertions, 10 deletions
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 <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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; } - |
