我看到我可以做freopen将stdout重定向到另一个tty的控制台。我正在尝试将其重定向到包括控制台在内的多个终端。控制台是程序运行的地方。最好的方法是什么?
TIA
答案 0 :(得分:2)
您没有指定您正在使用的平台,但假设您可以找到要重定向到的TTY的文件路径,则可以在freopen
文件上调用stdout
描述。但是,这将关闭初始文件描述符,这听起来不像您想要的行为。文件描述符只能指向一个文件。
最简单的C解决方案可能是printf的包装器,它在所有指定的文件上调用它。你可能能够使用线程做一些事情,但这可能会使事情变得复杂。
如果您使用的是* nix系统,我建议使用tee来输出到stdout和辅助文件。
答案 1 :(得分:0)
与freopen
一样,没有简单的方法可以做到这一点。您需要一些包含输入的包装器,并将其分别写入每个输出tty。
例如,有tee
程序将其输入多路复用到stdout和许多文件。例如,您可以在C中创建连接到tee /dev/ttyX /dev/ttyY ...
的管道。然后,您可以使用管道文件描述符替换stdout,您将获得所需的行为。