【问题标题】:How to block access to a file to other functions within same process?如何阻止对同一进程中其他功能的文件访问?
【发布时间】:2019-05-27 23:18:36
【问题描述】:

我的意思不是锁定文件!

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

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

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

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

【问题讨论】:

    标签: c file-access


    【解决方案1】:

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

    【讨论】:

    • 不错,我会试一试。
    【解决方案2】:

    通过一个互斥锁,如果一个线程想要访问文件,那么它必须通过那个函数这样做?

    【讨论】:

    • 我的库被注入匿名进程,所以我无法控制调用者,我观察到匿名进程在使用 fd 之前不会检查它。它最终使用了我的库正在使用的 fd。我也在我的问题中更新了这些细节。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-24
    相关资源
    最近更新 更多