c - 如何在c中捕获所有输出文本

标签 c outputstream

这是我的问题。我正在为一个 C 语言的项目编写单元测试类。单元测试类工作得很好,但它正在测试的方法之一调用 API 中的方法来与硬件进行通信。由于硬件的封闭软件,我真的没有办法让它在我运行测试时运行,而且由于测试的黑盒性质,我不需要这样做。

这些调用只是发送到硬件的 char* 消息,在运行我的测试时,我只得到大量“无法与 API 通信”的打印输出。我假设这是对 API 部分的某种错误检查。

我的问题是,为了获得漂亮的输出,在这种情况下是否可以捕捉、抑制或检查所有进入终端的文本。(这就是输出流吧?我对 C 还很陌生)

最佳答案

如果您正在链接生成这些消息的代码,您还可以考虑在标准输出(或标准错误)上调用 freopen()。不幸的是,您将重定向所有程序的输出。

可能保留原始标准输出的句柄,创建管道,调用 freopen() 将标准输出重定向到管道的一侧,并从另一侧读取线程,过滤输出并将“好的”消息传递到原始标准输出。

关于c - 如何在c中捕获所有输出文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3408585/

相关文章:

c - #在C中定义一个元组

c++ - 为什么我在 C 库中看到 THROW?

java - 输入流在循环中崩溃

java - 从sql server获取varbinary并发送到xpages中的输出流

java - 如何将输出流转换为输入流?

java - 我应该如何处理第三方输入/输出流?

c - 为什么我的函数按升序而不是最小堆对元素进行排序?

Linux内核中当前的宏

c - C `=` 运算符在结构之间应用时是否复制内存?

Java:空比较总是产生错误:不正确的警告?