C将标准输出重定向到多个位置
将输出重定向到另一个目的地相当容易。我可以通过以下方式轻松实现:C将标准输出重定向到多个位置,c,linux,stdout,io-redirection,tee,C,Linux,Stdout,Io Redirection,Tee,将输出重定向到另一个目的地相当容易。我可以通过以下方式轻松实现: freopen ("/def/tty0", "w", stdout); printf ("Redirected"); fclose (stdout); 但我如何将其重定向到两个或更多文件?我需要类似于“tee”提供的功能 有什么众所周知的方法吗?这是不可能直接做到的:每个文件描述符只分配给一个资源(通常是一个文件)。如果您想写入一个文件以产生对多个文件的写入,您必须做一些技巧。以下是一些想法: 使用GNU only函数fope
freopen ("/def/tty0", "w", stdout);
printf ("Redirected");
fclose (stdout);
但我如何将其重定向到两个或更多文件?我需要类似于“tee”提供的功能
有什么众所周知的方法吗?这是不可能直接做到的:每个文件描述符只分配给一个资源(通常是一个文件)。如果您想写入一个
文件
以产生对多个文件的写入,您必须做一些技巧。以下是一些想法:
- 使用GNU only函数
创建一个实际输出到多个文件的fopencookie(3)
。有关更多详细信息,请参阅文件*
的手册页fopencookie(3)
- 做一根管子,然后用叉子叉。分叉进程从管道中读取内容,并将其读取的内容写入所需的所有文件。原始进程写入管道
- 使用合适的参数调用
,并将数据写入tee(1)
的标准输入。查看tee(1)
,了解一个有用的函数popen(3)
tee
命令通过两个文件进行编码:标准输出和另一个文件,并将所有输入写入这两个文件。这就是tee所做的一切。众所周知的方法是tee