我必须在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/