我知道perror()
的一般用法。
但是现在,我想将其结果导出到文件中,而不是控制台。顺便说一下,我在android模拟器的adb shell下运行它。
答案 0 :(得分:8)
改为使用strerror()
:
fprintf(logfile, "Something went wrong: %s\n", strerror(errno));
或者,您可以使用stderr
将dup2()
重定向到文件,然后继续使用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