redirect到c中的多个ttys

我看到,我可以做freopenredirect到一个控制台的标准输出到另一个tty。 我试图redirect到多个terminal,包括控制台。 控制台是程序运行的地方。 什么是最好的办法呢?

TIA

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

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

如果你在一个* nix系统上,我建议使用tee来输出到stdout和二级文件。

freopen并不是一个简单的方法。 你需要一些包装,它接受输入,并将其写入每个输出tty。

例如,有一个tee程序将其输入复用到stdout和一些文件。 你可以例如在C中创建一个连接到tee /dev/ttyX /dev/ttyY ... 。 然后你可以用管道文件描述符替换标准输出,你会得到所需的行为。