C将标准输出重定向到多个位置

时间:2014-12-11 10:29:55

标签: c linux stdout io-redirection tee

将输出重定向到另一个目的地相当容易。我可以通过以下方式轻松实现:

freopen ("/def/tty0", "w", stdout);
printf ("Redirected");
fclose (stdout);

但是我怎么能将它重定向到两个或更多文件?我需要类似于" tee"提供的功能。

有没有众所周知的方法?

1 个答案:

答案 0 :(得分:3)

这不可能直接执行:每个文件描述符只分配给一个资源(通常是文件)。如果您希望在写入多个文件时写入FILE收益,则必须执行一些操作。以下是一些想法:

  • 使用仅GNU函数fopencookie(3)生成实际输出到多个文件的FILE*。有关详细信息,请参阅fopencookie(3)的联机帮助页。
  • 制作烟斗,然后叉。分叉进程从管道读取并将其读取的内容写入所需的所有文件。原始进程写入管道。
  • 使用合适的参数调用tee(1)并将数据写入tee(1)的标准输入。请查看popen(3)以获取有用的功能。