环境:ARM开发板
应用程序在开发板上长期运行,如何把程序中的printf信息自动保存到文件?有哪些方法?因为是ARM板,最好占用资源少点。或者有相关的文章或书也可以,我去找来研究,谢谢!

解决方案 »

  1.   

    printf 输出重定向就行吧, 应用> xxx.txt
      

  2.   

    可以试试用zlog,交叉编译参考http://www.itgather.com/2018/04/03/zlog%E5%9C%A8openwrt%E7%B3%BB%E7%BB%9F%E4%B8%8A%E7%9A%84%E7%A7%BB%E6%A4%8D/
      

  3.   

    fwrite  fprintf都可以实现吧
    两个函数都是对文件流的操作,都能实现功能,但是有所区别;
    fwrite是将数据不经转换直接以二进制的形式写入文件,而fprintf是将数据转换为字符后再写入文件。你前面说的啥覆盖,代码实现啥的,我没懂你的需求,请说明确。
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <unistd.h>
    /*
    程序思路:
    */
    int main()
    {
    int writen_num,read_num;
    FILE *fp;
    char buffer_2[100]={0};
    int a=123; fp=fopen("/root/eclipse-workspace/p2/Debug/f-test","r+");
    fprintf(fp,"test fprintf fprintf%d\n",a); fclose(fp);
    fp=fopen("/root/eclipse-workspace/p2/Debug/f-test","r");
    read_num=fread(buffer_2,sizeof(char),19,fp);
    if (read_num==-1)
    {
    perror("read fail =");
    }
    else
    {
    printf("%d byte were read\n",read_num);
    }
    for(int i=0;i<19;i++)
    {
    printf("%c",buffer_2[i]);
    }
    printf("\n");
    fclose(fp);
    }