微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从内核中的超级块读取数据?

如何解决如何从内核中的超级块读取数据?

我在用户间的 c 上编写了主管应用程序,我在超级块上保留了列入白名单的 ID。它从 superblock 读取数据: filepath = "/dev/flashSSD"

        char soz[15];
        int i=1;
        fp = open(filepath,O_RDONLY);
        if (fp<0) {printf("Unable to open %s block.\n",filepath);exit(EXIT_FAILURE);}

        off_t off = lseek(fp,SEEK_SET);
        ssize_t len = read(fp,prc,sizeof prc);
        sscanf(prc[0],"%d",sany);

并且在管理(插入,删除)之后,它会在退出时写回超级块:

        fp = open(filepath,O_RDWR);
        if (fp<0) {printf("Unable to open %s block.\n",filepath);exit(EXIT_FAILURE);}

        if (lseek(fp,SEEK_SET)<0) {perror("write1: ");}
        if (write(fp,&prc,sizeof(prc))<0) {perror("write2: ");}
        close(fp);

现在,我如何从 kernel 中的超级块读取数据?

解决方法

感谢@Tsyvarev,我了解到我们可以像从文件一样读取超级块。

int read_sb() {
  int fd;
  char magl[1024];
  
  fd = open("/dev/flashSSD",O_RDONLY);

  /* Reads the boot section and the superblock */
  read(fd,magl,1024);
  
  close(fd);

  return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。