【发布时间】:2010-06-07 06:37:08
【问题描述】:
我有一个名为 AppFS 的应用程序正在运行。这个应用程序有一个 ext2 文件系统,它只是附加到文件的末尾(它的位置使得应用程序二进制文件存在于 1MB 的间距区域中,然后是 ext2 数据)。
现在我已经在程序中嵌入了 FUSE,并且我已经成功地将文件系统从应用程序数据中提取到一个临时文件中,以便 FUSE 可以挂载/使用它。
我现在遇到的问题是将临时文件写回到应用程序文件中。我得到“文本文件忙”大概是因为应用程序已锁定自身并且不会让写入发生。
有没有办法强制文件解锁,以便我可以向其中写入数据? (需要注意的是,我并没有更改应用程序的二进制区域 - 只是重写了 ext2 组件。)它需要在不需要 root 权限的情况下解锁(由启动应用程序的同一用户解锁)。
【问题讨论】:
-
我想这里的问题是启动应用程序的用户不一定与拥有二进制文件的用户相同。您真的需要将
ext2数据嵌入到二进制文件中吗? -
从二进制文件中拆分 ext2 或在运行完整的可执行文件(附加 ext2)或仅提取文件中的可执行文件,运行它,然后使用另一个可执行文件(附加 ext2)作为文件系统的文件。
-
可执行部分和 ext2 组件之间的分离对于操作系统来说可能并不明显。它怎么知道对文件进行字节范围锁定?它需要锁定可执行部分,因为它可能会在 RAM 不足时从内存中丢弃。