在c中重定向到多个ttys

时间:2013-12-25 16:25:39

标签: c linux filesystems system

我看到我可以做freopen将stdout重定向到另一个tty的控制台。我正在尝试将其重定向到包括控制台在内的多个终端。控制台是程序运行的地方。最好的方法是什么?

TIA

2 个答案:

答案 0 :(得分:2)

您没有指定您正在使用的平台,但假设您可以找到要重定向到的TTY的文件路径,则可以在freopen文件上调用stdout描述。但是,这将关闭初始文件描述符,这听起来不像您想要的行为。文件描述符只能指向一个文件。

最简单的C解决方案可能是printf的包装器,它在所有指定的文件上调用它。你可能能够使用线程做一些事情,但这可能会使事情变得复杂。

如果您使用的是* nix系统,我建议使用tee来输出到stdout和辅助文件。

答案 1 :(得分:0)

freopen一样,没有简单的方法可以做到这一点。您需要一些包含输入的包装器,并将其分别写入每个输出tty。

例如,有tee程序将其输入多路复用到stdout和许多文件。例如,您可以在C中创建连接到tee /dev/ttyX /dev/ttyY ...的管道。然后,您可以使用管道文件描述符替换stdout,您将获得所需的行为。