记一次保存机制不可写问题

信息掉电不保存问题分析如下

     OS查看了data分区是可读写的,hmi仍然提示找不到目录或文件
     猜测:hmi打不开或写不进文件是open函数的参数设置,权限不适当导致的

     测试程序如下,有两个注意点

1、请注意关于权限mode参数的设置(当前系统权限掩码umask 0022)
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<stdio.h>

void main()
{
    int fd,size;
    char s [ ]="Linux Programmer!\n", buffer[80];

    fd=open("/data/data/Persistency", O_RDWR|O_CREAT, S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IWGRP|S_IXGRP|S_IROTH|S_IWOTH|S_IXOTH);
    write(fd, s, sizeof(s));
    close(fd);
    fd=open("/data/data/Persistency", O_RDONLY);
    size=read(fd,buffer,sizeof(buffer));
    close(fd);
    printf("%ssize= %d \n", buffer, size);
}
2、 在现有系统中只存在/data目录, O_RDWR|O_CREAT 参数是不能直接创建 /data/data/Persistency 文件的
    需要在打开文件前先创建目录
mkdir("/data/data",0777);
fd=open("/data/data/Persistency", O_RDWR|O_CREAT, S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IWGRP|S_IXGRP|S_IROTH|S_IWOTH|S_IXOTH);
下图是运行结果


猜你喜欢

转载自blog.csdn.net/bgk112358/article/details/80006004