gpt4 book ai didi

c++ - 如何修改当前正在运行的应用程序的应用程序文件(在 Linux 上)?

转载 作者:太空狗 更新时间:2023-10-29 23:09:59 26 4
gpt4 key购买 nike

我有一个名为 AppFS 的应用程序正在运行。这个应用程序有一个 ext2 文件系统,它刚好附加到文件的末尾(它的位置使得应用程序二进制文件存在于 1MB 的间距区域中,后面是 ext2 数据)。

现在我已将 FUSE 嵌入到程序中,并且已设法将文件系统从应用程序数据中提取到一个临时文件中,以便 FUSE 可以挂载/使用它。

我现在遇到的问题是将临时文件写回应用程序文件。我得到“文本文件忙”大概是因为应用程序已锁定自身并且不会让写入发生。

有没有办法强制文件解锁,以便我可以向其中写入数据? (重要的是要注意,我没有更改应用程序二进制区域 - 只是重写了 ext2 组件。)它需要解锁而不需要 root 权限(由启动应用程序的同一用户解锁)。

最佳答案

这个问题的解决方案是重命名现有的应用程序名称(到临时目录中的某个位置),然后将新的(生成的)文件移回原来的位置,并应用与旧的相同的 umask/uid/gid一个有。移动后,您可以安全地取消链接正在运行的可执行文件。

这是一个有点棘手的解决方法(我特别不喜欢应用程序被完全删除和替换的事实),但它有效。

关于c++ - 如何修改当前正在运行的应用程序的应用程序文件(在 Linux 上)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2987505/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com