Linux C ext2fs_write_inode_full无法写入

问题描述 投票:0回答:1

成功读取文件索引节点后:

retval = ext2fs_read_inode_full(current_fs, inode, inode_buf, EXT2_INODE_SIZE(current_fs->super));
if (retval) {
    fprintf(stderr, "Failed to read inode\n");
    free(fs);
    free(inode_buf);
    return retval;
}

((到此为止,我已经验证了索引节点包含所讨论文件的正确数据)

我立即尝试用它写回:

  retval = ext2fs_write_inode_full(current_fs, inode, inode_buf, EXT2_INODE_SIZE(current_fs->super));
  if (retval) {
      fprintf(stderr, "Failed to write inode %d\n", retval);
  }

((当然,我打算在回写之前更改inode中的某些日期值)

但是ext2fs_write_inode_full返回错误值2133571349。

程序以root特权执行!

c linux inode ext2
1个回答
0
投票

问题原来是crtime使用ext2fs_open打开FS的方式。

我需要传递EXT2_FLAG_RW标志,否则默认情况下打开为只读。

© www.soinside.com 2019 - 2024. All rights reserved.