Я не имею в виду блокировку файла!
Чего я хочу добиться, так это того, чтобы все другие потоки обращались к файлу без каких-либо проблем, но в некоторых случаях я хочу сбой вызовов, которые обращаются к этому файлу через fd, например dup2 (2), ftruncate (2) и т. д. Один из вариантов: сделать оболочку для всех таких функций, как dup2(2), которая сначала проверит, разрешать ли fd или нет, а затем вызовет настоящую dup2(2). Но делать это с каждым системным вызовом с использованием fd — долгая задача.
Возможно, если есть решение для защиты файла паролем, чтобы к нему можно было получить доступ только при указании указанного пароля.
Моя библиотека внедряется в анонимный процесс, поэтому я не могу контролировать вызывающую программу, и я наблюдаю, что анонимный процесс не проверяет fd перед его использованием. Это заканчивается использованием fd, который использует моя библиотека.
Пожалуйста, не жалуйтесь на проблемы с дизайном. Пожалуйста, просто сосредоточьтесь на проблеме.
Через блокировку мьютекса и сделать так, чтобы, если поток хочет получить доступ к файлу, он должен сделать это через эту функцию?
Похоже, вы внедряете библиотеку в процесс с другой ограниченной моделью памяти, и ваша библиотека несовместима. Вы можете попробовать использовать dup2()
, чтобы переместить свои собственные ручки на действительно высокие значения и надеяться, что это сработает.
Типа да, попробую.
Моя библиотека внедряется в анонимный процесс, поэтому я не могу контролировать вызывающую программу, и я наблюдаю, что анонимный процесс не проверяет fd перед его использованием. Это заканчивается использованием fd, который использует моя библиотека. Я также обновил эти детали в своем вопросе.