【问题标题】:C redirect standard output to several placesC 将标准输出重定向到几个地方
【发布时间】:2014-12-11 10:29:55
【问题描述】:

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

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

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

有什么众所周知的方法吗?

【问题讨论】:

  • 不,你必须手动编码。
  • tee 命令有两个文件:标准输出和另一个文件,并将所有输入写入这两个文件。这就是tee 所做的一切。
  • 众所周知的方法是 tee

标签: c linux stdout io-redirection tee


【解决方案1】:

这是不可能直接做到的:每个文件描述符都被分配给一个资源(通常是一个文件)。如果您想在写入多个文件时写入FILE 产量,您必须做一些技巧。以下是一些想法:

  • 使用仅限 GNU 的函数 fopencookie(3) 创建一个 FILE*,它实际上输出到多个文件。有关详细信息,请参阅 fopencookie(3) 的手册页。
  • 先做管子,然后叉子。分叉的进程从管道中读取数据并将其读取的内容写入您想要的所有文件中。原始进程写入管道。
  • 使用合适的参数调用tee(1),并将数据写入tee(1)的标准输入。查看popen(3) 以了解执行此操作的有用功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-26
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    • 2013-02-10
    • 1970-01-01
    • 1970-01-01
    • 2012-11-23
    相关资源
    最近更新 更多