2

我知道perror().

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

4

3 回答 3

8

改用strerror()

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

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

编辑:当我最初回答这个问题时,我的大脑并没有在所有气缸上开火。没有必要使用sprintf()后跟fputs()asfprintf()可以做到这一切(感谢@maverik)。

于 2012-05-30T06:53:19.183 回答
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
于 2012-05-30T07:05:13.963 回答
1

我相信您可以将标准错误定向到您选择的文件,例如 $ ./program 2> errlog

于 2012-05-30T06:56:44.903 回答