【发布时间】:2012-11-15 08:26:29
【问题描述】:
对于工作中的C++ 项目,我使用GLPK(用C 编写的Gnu 线性规划工具包)。当我在控制台应用程序中使用某些程序时,会从GLPK 生成自动输出。
现在,在我将所有内容打包到 GUI 中之后,我想使用以前显示的文本。所以我将标准输出和标准错误重定向到文件。 (我检查了它在我的应用程序中与printf("Hallo World"); 一起工作正常)。
问题是GLPK 格式的文本没有出现在文件中。经过一番研究,我发现使用了声明xprintf(...)。 (老实说,我不知道xprintf 的作用以及与printf 的区别是什么。)
谁能解释一下:
- 在没有标准输出的情况下如何在屏幕上打印文本。
- 如何获得自动生成的输出到文件或流或任何我可以处理的东西。
【问题讨论】:
-
你检查过它是否使用
stderr吗? -
也许就是这么简单。我以为我已将 stderr 重定向到 error.txt。但是我打印错误的测试没有出现在error.txt中。我必须仔细检查。
-
stderr 被重定向到 error.txt。 (检查
fprintf( stderr, "ERROR1");奇怪perror("ERROR2");没有出现在error.txt 中(我不得不说那是我第一次使用该语句并且我不熟悉它的行为) -
@MartinHoratschek 标准的
perror函数总是打印到stderr,所以如果你在进程完成后没有在错误文件中看到它的输出,要么你(或GLPK)没有使用标准perror函数,或者您没有正确重定向stderr(您的评论说您已经测试过)。 -
您使用的是哪个版本的 GLPK?如何将
stdout重定向到文件?