我在我的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*/
}
}
我错过了什么吗?