aboutsummaryrefslogtreecommitdiff
path: root/src/signal.c
diff options
context:
space:
mode:
authorCharles Cabergs <me@cacharle.xyz>2020-10-07 15:10:16 +0200
committerCharles Cabergs <me@cacharle.xyz>2020-10-07 15:10:16 +0200
commit0b031c050e049d7bdab459b48f574e8b0048926d (patch)
tree74eee3347c88daced8db318a2ce30e899533acd0 /src/signal.c
parent38630279546fbd3876fe2396f2afe4ca1bca9acc (diff)
downloadminishell-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.c24
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;
}
-