rask24 / minishell

3 stars 0 forks source link

Handle pipes in a more efficient way #90

Open rask24 opened 1 week ago

rask24 commented 1 week ago

Description

It is necessary for more efficient file descriptor management to close pipe[1] in the child process.

minishell$ echo Hello | cat | sleep 100 | echo Hello | cat | sleep 100
❯ lsof -c sleep
COMMAND   PID       USER   FD   TYPE             DEVICE SIZE/OFF                NODE NAME
sleep   93672 reiyaasuke  cwd    DIR               1,14      832            68945239 /Users/reiyaasuke/clang/minishell
sleep   93672 reiyaasuke  txt    REG               1,14   101136 1152921500312524816 /bin/sleep
sleep   93672 reiyaasuke    0   PIPE 0xb976823fc5e8455d    16384                     
sleep   93672 reiyaasuke    1   PIPE 0x24a92ef58ba3a97c    16384                     ->0xa7f54fb810ee5165
sleep   93672 reiyaasuke    2u   CHR              16,16 0t392463                5745 /dev/ttys016
sleep   93672 reiyaasuke    3   PIPE 0xa7f54fb810ee5165    16384                     ->0x24a92ef58ba3a97c
sleep   93675 reiyaasuke  cwd    DIR               1,14      832            68945239 /Users/reiyaasuke/clang/minishell
sleep   93675 reiyaasuke  txt    REG               1,14   101136 1152921500312524816 /bin/sleep
sleep   93675 reiyaasuke    0   PIPE 0x1f8eb6655002a3df    16384                     
sleep   93675 reiyaasuke    1u   CHR              16,16 0t392463                5745 /dev/ttys016
sleep   93675 reiyaasuke    2u   CHR              16,16 0t392463                5745 /dev/ttys016
rask24 commented 1 week ago
typedef struct s_pipeline_conf
{
    int     fd_prev_in;
    int     fd_prev_out;
    int     fd_next_in;
    int     fd_next_out;
}   t_pipeline_conf;
rask24 commented 1 week ago

SIGPIPE: