如何使用perror()但将提示输出到文件

时间:2012-05-30 06:50:38

标签: android c++ c linux android-emulator

我知道perror()的一般用法。

但是现在,我想将其结果导出到文件中,而不是控制台。顺便说一下,我在android模拟器的adb shell下运行它。

3 个答案:

答案 0 :(得分:8)

改为使用strerror()

fprintf(logfile, "Something went wrong: %s\n", strerror(errno));

或者,您可以使用stderrdup2()重定向到文件,然后继续使用perror()

编辑:我最初回答这个问题的时间很早,而且我的大脑并没有在所有气瓶上开火。没有必要使用sprintf()后跟fputs(),因为fprintf()可以完成所有操作(感谢@maverik)。

答案 1 :(得分:2)

您可以将整个stderr重定向到该文件。这是一种Unix方式:

int fd = open("logfile", O_WRONLY); // 'fd' stands for 'file descriptor
close(2); // close stderr
dup(fd); // duplicate fd so that it's copy will be the lowest available value -- 2

答案 2 :(得分:1)

我相信你可以将stderr指向你选择的文件,例如$ ./program 2> ERRLOG