如何阻止同一进程中其他函数对文件的访问?

How to block access to a file to other functions within same process?

我不是说锁定文件!

我想要实现的是所有其他线程应该毫无问题地访问该文件,但在某些情况下,我希望通过 fd 访问该文件的调用失败,如 dup2(2)、ftruncate(2)、等等。一个选择是为所有此类函数制作一个包装器,如 dup2(2),它将首先检查是否允许 fd 或否,然后调用真正的 dup2(2)。但是,使用 fd 对每个系统调用执行此操作是一项很长的任务。

也许如果有密码保护文件的解决方案,以便只有在指定密码时才能访问它。

我的库被注入到匿名进程中,所以我无法控制调用者,我观察到匿名进程在使用它之前不检查 fd。它最终使用了我的图书馆正在使用的 fd。

请不要抱怨设计问题。请只关注问题。

通过互斥锁并使其成为一个线程,如果一个线程想要访问该文件,那么它必须通过该函数来访问?

听起来您正在将一个库注入到一个具有不同受限内存模型的进程中,并且您的库不兼容。您可以尝试使用 dup2() 将您自己的句柄移动到非常高的值并希望它有效。