我正在做我的作业,即在 C 中复制 unix 命令 shell。
我已经实现了后台运行(&)的单个命令执行。
现在我正处于实现管道的阶段,我面临这个问题,对于大于 1 的管道,带有管道的子命令已完成,但最终输出不会显示在 stdout 上(最后一个命令的 stdin 被替换为 read最后一个管道)
dup2(pipes[lst_cmd], 0);
fflush(STDIN_FILENO)
我也在父母那里试过。
我的程序的出口是 CONTROL-D,当我按下它时,会显示输出(也退出,因为我在 CONTROL-D 上的操作是退出(0))。
我认为管道的输出在标准输出缓冲区中,但没有显示。除了 fflush 之外,还有其他方法可以将缓冲区中的内容发送到标准输出吗?