我知道perror()
.
但是现在,我想将其结果导出到文件中,而不是控制台。顺便说一句,我在 android 模拟器的 adb shell 下运行它。
我知道perror()
.
但是现在,我想将其结果导出到文件中,而不是控制台。顺便说一句,我在 android 模拟器的 adb shell 下运行它。
改用strerror()
:
fprintf(logfile, "Something went wrong: %s\n", strerror(errno));
或者,您可以使用重定向stderr
到文件dup2()
,然后继续使用perror()
.
编辑:当我最初回答这个问题时,我的大脑并没有在所有气缸上开火。没有必要使用sprintf()
后跟fputs()
asfprintf()
可以做到这一切(感谢@maverik)。
您可以将整个重定向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
我相信您可以将标准错误定向到您选择的文件,例如 $ ./program 2> errlog