C++ 当使用stdout输出二进制数据时,我如何也将调试/详细信息输出到终端?

C++ 当使用stdout输出二进制数据时,我如何也将调试/详细信息输出到终端?,c++,c,linux,pipe,C++,C,Linux,Pipe,我正在编写一个应用程序,它将打开一个文件并输出一些经过处理的版本。它将是一个图形桌面应用程序,但也必须适合在web服务器上运行。因此,它需要为web应用程序的后端代码(可能是PHP)提供合适的接口 我认为最通用的接口是CLI,在CLI中,每个文件只调用一次程序。生成的数据通过标准输出管道输出。这样,就不必创建临时文件;这一切都发生在记忆中 我希望能够从终端手动调用程序,并看到详细的调试输出。一般来说,当stdout用于输出数据流时,输出其他信息的常规方式是什么?我应该使用stderr还是有其他方

我正在编写一个应用程序,它将打开一个文件并输出一些经过处理的版本。它将是一个图形桌面应用程序,但也必须适合在web服务器上运行。因此,它需要为web应用程序的后端代码(可能是PHP)提供合适的接口

我认为最通用的接口是CLI,在CLI中,每个文件只调用一次程序。生成的数据通过标准输出管道输出。这样,就不必创建临时文件;这一切都发生在记忆中

我希望能够从终端手动调用程序,并看到详细的调试输出。一般来说,当stdout用于输出数据流时,输出其他信息的常规方式是什么?我应该使用stderr还是有其他方法?我希望能够像这样调用程序并查看一些调试输出

./program--some选项--verbose--file=“./myfile.txt”>。/output.txt

我可以使用文件描述符3(或其他数字)作为二进制数据,使用标准输出作为详细信息吗

./program--some选项--verbose--file=“./myfile.txt”3>/output.txt

感谢使用标准:

./program --some-option --verbose --file="./myfile.txt" > ./output.txt 2> ./debug.out

通常使用stderr和stdout来分离不同类型的输出

但您最好使用参数来允许用户指定在何处以及是否写入特定类别的输出。 您可以使用类似于
--启用详细输出
--处理日志=foo.log


你也可以考虑在你可能已经创建的日志文件中处理这个问题。通过在日志框架中设置一定的详细度,您可以根据需要将所需的输出写入日志。

为什么不使用stderr?但我会使用文件作为输出,并引入参数来启用它们
stderr
或日志文件是两种常见的解决方案。@Marged是的,想想看,这是正常的,不是吗?因此,在服务器上,它会将二进制数据输出到stdout,但在终端上调用时,您会说--output file=output.txt或其他什么,然后将调试信息输出到stdout。谢谢