如何将两个文件流合并为一个?

如何将两个文件流合并为一个?

我有两个独立的程序正在运行,每个程序都会生成一个日志文件(一个是连接到串行端口的设备的输出,另一个是从命令上述设备的程序发送的调试消息)。

我希望能够将命令软件打印的调试消息与从串行设备收到的响应关联起来。但是,由于这两个程序是分开的,因此我无法在一个文件中查看调试消息并同时找出从串行端口发回的数据。

我想要找到一种可以获取两个程序的文件流并将它们合并为一个文件的东西。

我想解决方案可能是这样的:

我将这两个程序设置为将其日志文件保存到两个“虚拟文件”,这两个文件将由此解决方案创建和监控。此解决方案将持续监控这些虚拟文件,并在将数据写入文件时将其输出保存到另一个文件中。

答案1

如果这些命令可以从命令行启动,那么您可以使用任何好的 Unix shell 执行此操作,使用&操作员将它们作为后台活动启动,通过管道传输 stdout 和 stderr 以tee将它们写入日志并显示它们。

你可以使用我的汉密尔顿C壳.(你可以用赛格威 bash

(command1 &; command2 &) |& tee logfile.txt

Hamilton C shell下的两个后台进程

屏幕截图中额外的数字 1 到 4 的行是操作员写入 stderr 的后台线程 id &

答案2

多坎图书馆允许您创建一个虚拟文件系统,然后您可以对其进行编程以根据需要处理虚拟文件。我能够将一些东西组合在一起,使用它来生成我的程序可以登录的虚拟驱动器。该软件会随时获取来自每个文件的数据,并将其输出到交织两个数据流的单个文件中。

相关内容