From 6f75f2d1815d6a435e6eef09b5f043f00d33e983 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kha=C3=AFs=20COLIN?= Date: Mon, 7 Apr 2025 10:50:54 +0200 Subject: [PATCH] connec_cmd_execute: naive recursive pipe implementation (does not handle redirection) --- src/executing/connec_cmd/connec_cmd_execute.c | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/executing/connec_cmd/connec_cmd_execute.c b/src/executing/connec_cmd/connec_cmd_execute.c index e696952..29e477f 100644 --- a/src/executing/connec_cmd/connec_cmd_execute.c +++ b/src/executing/connec_cmd/connec_cmd_execute.c @@ -6,12 +6,14 @@ /* By: khais +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/07 10:38:55 by khais #+# #+# */ -/* Updated: 2025/04/07 10:51:19 by khais ### ########.fr */ +/* Updated: 2025/04/07 11:36:57 by khais ### ########.fr */ /* */ /* ************************************************************************** */ #include "connec_cmd_execute.h" #include "../cmd/cmd_execute.h" +#include "../common/do_waitpid.h" +#include static void connec_and_cmd_execute(t_connec_cmd *cmd, t_minishell *app) { @@ -27,10 +29,27 @@ static void connec_or_cmd_execute(t_connec_cmd *cmd, t_minishell *app) cmd_execute(cmd->second, app); } +static void connec_pipe_cmd_execute(t_connec_cmd *cmd, t_minishell *app) +{ + int pid1; + int pid2; + + pid1 = fork(); + if (pid1 == 0) + cmd_execute(cmd->first, app); + pid2 = fork(); + if (pid2 == 0) + cmd_execute(cmd->second, app); + do_waitpid(app, pid1); + do_waitpid(app, pid2); +} + void connec_cmd_execute(t_connec_cmd *cmd, t_minishell *app) { if (cmd->connector == FT_AND) connec_and_cmd_execute(cmd, app); if (cmd->connector == FT_OR) connec_or_cmd_execute(cmd, app); + if (cmd->connector == FT_PIPE) + connec_pipe_cmd_execute(cmd, app); }