From 0095e89db4bfde5f61d516c8887279f1180c7302 Mon Sep 17 00:00:00 2001 From: y-syo Date: Tue, 13 Aug 2024 18:41:46 +0200 Subject: [PATCH] =?UTF-8?q?=E3=80=8C=F0=9F=94=A8=E3=80=8D=20fix(exec/exec?= =?UTF-8?q?=5Fcmd):=20fixed=20sigpipe=20leaks=20when=20forked=20:D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/execution.h | 5 ++++- src/builtins/free_exit.c | 2 +- src/exec/exec_cmd.c | 9 ++++----- src/exec/exec_split_cmd.c | 2 +- src/exec/sigpipe.c | 33 +++++++++++++++++++++++++++++++++ 5 files changed, 43 insertions(+), 8 deletions(-) create mode 100644 src/exec/sigpipe.c diff --git a/include/execution.h b/include/execution.h index 451153b..e351a89 100644 --- a/include/execution.h +++ b/include/execution.h @@ -6,7 +6,7 @@ /* By: mmoussou infile, STDIN_FILENO); if (cmd->infile != STDIN_FILENO) close(cmd->infile); - if (exec.status == -1) - exit(-1); exec.status = dup2(cmd->outfile, STDOUT_FILENO); if (cmd->outfile != STDOUT_FILENO) close(cmd->outfile); @@ -65,9 +63,10 @@ void __fork_single_cmd(t_cmd *cmd, char **env, t_env *env_t, t_exec exec) close(STDOUT_FILENO); i = 2; while (i++ < 1023) - { close(i); - } + get_env_arr(env); + if (is_in_builtins(cmd->cmd)) + signal(SIGPIPE, sig_p); exec_cmd(cmd, env, env_t); } } diff --git a/src/exec/exec_split_cmd.c b/src/exec/exec_split_cmd.c index a84e125..d9f18f3 100644 --- a/src/exec/exec_split_cmd.c +++ b/src/exec/exec_split_cmd.c @@ -6,7 +6,7 @@ /* By: mmoussou