4

发生错误时,我希望我的 C 代码在退出程序之前存储错误。是否建议将其存储stderr到文件(例如,/home/logs.txt),或者是否建议使用不同的方法来保存日志/错误报告(考虑到编程环境Linux)。例如,对于下面的代码,我如何应用该方法来存储日志/错误消息/home/log.txt/home/log

FILE *fp1;
fp1 = fopen("/sys/class/gpio/export","w"); 
if(fp1 == NULL){
    fprintf(stderr, "errno:%s - opening GPIO136 failed - line 739\n ", strerror(errno));
    close(fp1);
    exit(1);
}

谢谢你。

4

2 回答 2

3

Ifstderr总是用来打印出你所有的错误信息,所以,你可以将输出重定向到一个特定的文件。

$ program 2>~/logs.txt

要获得更好的日志记录工具,您可以使用:

于 2013-04-20T04:21:06.563 回答
0

如果要存储错误,stderr 可能不是一个好的选择,因为每次运行程序时都需要将 stderr 传送到文件中。

如果要写入 /home/log.txt,请打开指向它的 FILE 指针并使用 fprintf 写入,就像您尝试打开 /sys/class/gpio/export 并写入该文件而不是 stderr 一样。还要确保以附加模式打开日志文件。

FILE *fp1;
fp1 = fopen("/sys/class/gpio/export","w"); 
if(fp1 == NULL){
   FILE *fpErr = fopen("/home/log.txt", "a");
   if(fpErr != NULL)
      fprintf(fpErr, "errno:%s - opening GPIO136 failed - line 739\n ", strerror(errno));
   close(fpErr);
   close(fp1);
   exit(1);
}
于 2013-04-20T03:22:09.037 回答