我知道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