我必须在Linux的C语言中模拟tee命令。 tee在内部如何工作?它看起来像T形管,所以我应该使用管吗?有特殊的管道吗?

最佳答案

tee接受stdin并将数据流以及作为选项提供的文件复制到stdout,它可以在许多非常不同的情况下使用。

C语言中的实现非常简单,只需编写一个程序,即可将所有数据从stdin复制到stdout,还可以对基于命令行参数打开的文件中的stdout使用相同的输出语句。

基本上是伪代码:

file f = open(argv[1])
while (! end of file stdin) {
  buffer = read stdin
  write stdout buffer
  write f buffer
}
close(f)

请注意,您实际上不需要对管道做任何事情,您的shell会整理管道,程序只需要将数据从一个流复制到另外两个流。

关于c - 在C中模拟Linux命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12398947/

10-15 04:03