多管道实施

时间:2015-09-24 23:26:16

标签: c fork

我目前正致力于为我的shell实现管道。我当前的管道实现适用于单个管道(A | B),但不适用于多个管道(A | B | C)。

示例:“ls | grep'p'| wc” 在这种情况下,第二个输出不会将其输出重定向到wc命令。有小费吗?

                int fd[2];
                pipe(fd);                    
                int fd_past = 0;

                //commands are in A1 -> process -> Tokens
                while(A1->process != NULL) {
                    child = fork();
                    if (child == 0) {
                        dup2(fd_past,0);
                        close(fd[0]);                            
                        dup2(fd[1], 1);
                        Execute(A1->process->tokenCount, A1->process->Tokens);

                    } else {                            
                        close(fd[1]);
                        //save input for next command
                        fd_past = fd[0];   
                    }
                    A1->process = A1->process->next;
                }

0 个答案:

没有答案