使用execvp执行管道命令时无输出

时间:2016-10-10 20:17:16

标签: shell pipe fork execvp dup

我在我的microshell中运行命令。单个命令似乎工作正常,但在给出ls || sort之类的管道命令时,它不会立即提供输出。当我退出程序时,将打印所有管道命令的输出。我不知道如何纠正这个问题。下面是我的管道命令代码。

pid = fork(); /* Creating  child   */

if(pid==0) /*Inside child  */
{
    dup2(fd[1],STDOUT_FILENO); /* Redirecting the stdout to the pipe  using the  dup2 */
    close(fd[0]); /*Closing the read descriptor of pipe */
    execvp(commandExecute1[0],commandExecute1); /* Execute the first command */
}
else
{  
    /*Inside  Parent */ 
    if((pid=fork())==0) /*second child */
    {
        dup2(fd[0],STDIN_FILENO); /* Redirecting standard input to the read descriptor of pipe */
        dup2(STDOUT_FILENO,fd[1]);  /* Redirecting the pipe descriptor o/p to STDOUT */
        close(fd[1]);  /*Close write file descriptor of pipe */
        execvp(commandExecute2[0],commandExecute2); /* Running the second command*/
    }
}  

我错过了什么吗?

0 个答案:

没有答案