我已经被困在这个问题上一段时间了,是否可以将标准输出重定向到两个不同的地方?我正在编写自己的 shell 进行练习,它目前可以运行 ps aux | 之类的命令。 wc -l
或 ps aux | wc -l > 输出文件
。但是,当我尝试运行 ps aux > file.out | wc -l
,第二个命令没有接收到第一个命令的输入。
在最后一个示例中,第一个命令将在子进程中运行,该子进程将输出到管道的一端。逻辑类似如下:
close(stdout);
dup2(fd[1], STDOUT_FILENO);
//If a file output is also found
filewriter = open(...);
dup2(filewriter, STDOUT_FILENO);
//Execute the command
最佳答案
普通的 UNIX shell 也不能使用该语法。 UNIX(和其他一些操作系统)提供了 tee
[1] 命令来将输出发送到文件以及 stdout
。
例子:
ps 辅助 | tee file.out | wc -l
关于c - 是否可以将 stdout 重定向到 C 中的两个位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24806317/