如何阻止同一进程中其他函数对文件的访问?
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()
将您自己的句柄移动到非常高的值并希望它有效。
我不是说锁定文件!
我想要实现的是所有其他线程应该毫无问题地访问该文件,但在某些情况下,我希望通过 fd 访问该文件的调用失败,如 dup2(2)、ftruncate(2)、等等。一个选择是为所有此类函数制作一个包装器,如 dup2(2),它将首先检查是否允许 fd 或否,然后调用真正的 dup2(2)。但是,使用 fd 对每个系统调用执行此操作是一项很长的任务。
也许如果有密码保护文件的解决方案,以便只有在指定密码时才能访问它。
我的库被注入到匿名进程中,所以我无法控制调用者,我观察到匿名进程在使用它之前不检查 fd。它最终使用了我的图书馆正在使用的 fd。
请不要抱怨设计问题。请只关注问题。
通过互斥锁并使其成为一个线程,如果一个线程想要访问该文件,那么它必须通过该函数来访问?
听起来您正在将一个库注入到一个具有不同受限内存模型的进程中,并且您的库不兼容。您可以尝试使用 dup2()
将您自己的句柄移动到非常高的值并希望它有效。