Pipe:如何创建N管?

时间:2017-01-12 14:39:38

标签: c linux shell pipe io-redirection

我正在尝试创建一个shell,但在实现管道时遇到了麻烦。目标是在创建的shell上键入命令(例如ls -l -a | sort -u < myfile > myfile2 | w)。管道数是随机的,代码必须支持n个管道。

我有这样的事情:

int fork_pipe(int n)
{

int i;
int in=0;
int fd[2];

for(i=0; i< n; i++)
{
    pipe(fd);

    if(fork()==0)
    {

        if(in != 0)
        {
            dup2(in,0);
            close(in);
        }

        if(out != 1)
        {
            dup2(out,1)
            close(out);
        }

        execpv(argv_current_command,argv_current_command++); //Incompleto

        close(fd[1]);
        in = fd[0];
    }

}

if(in!=0)
{
    dup2(in,0);
}

execpv(argv_current_command,argv_current_command++);

}

我有一个pipe_count来知道稍后将作为n发送到fork_pipe函数的管道数。

0 个答案:

没有答案