我有一个应用程序,它接受一些命令行参数,然后将一些文本打印到终端,然后开始将数据写入文件。它有一个参数,我可以使用它来定义要写入的文件名(例如-o some-file-name.bin
)。
我想使用另一个应用程序(实时)处理该数据,因此我尝试通过指定-o -
并将输出传输到另一个工具来使程序将其数据输出到标准输出。然而,不幸的是,该程序不够聪明,无法注意到它正在写入标准输出,并且它应该停止将人类可读的文本写入标准输出(因为这会弄乱二进制数据)。
因此,通常该工具会将文本写入标准输出(我不关心)并将数据写入文件。我想忽略写入标准输出的所有文本,而是让它将数据写入标准输出,以便我可以将其传输到另一个工具中。然而,当我使用 运行它时-o -
,它会将(二进制)数据和无用的文本写入标准输出,从而破坏数据。
我尝试-o >( my_other_tool )
代替管道,但这导致了Couldn't open output: /dev/fd/63: /dev/fd/63: No such file or directory
.
除了重新编译该工具并删除所有无用的 printf 调用之外,还有其他方法可以忽略原始 stdout 并将其写入文件的数据发送到 stdout 吗?
编辑:如果有帮助,我正在谈论nsntrace。