Как заблокировать доступ к файлу другим функциям в рамках того же процесса? - PullRequest
0 голосов
/ 28 мая 2019

Я не имею в виду блокировку файла!

Чего я хочу добиться, так это чтобы все другие потоки имели доступ к файлу без каких-либо проблем, но в некоторых случаях я хочу отказать вызовам, которые обращаются к этому файлучерез fd, как dup2 (2), ftruncate (2) и т. д. Один из вариантов - создать оболочку для всех таких функций, как dup2 (2), которая сначала проверит, разрешить ли fd или no, а затем вызовет реальный dup2 (2).).Но это длинная задача сделать это с каждым вызовом sys, используя fd.

Может быть, если есть решение для защиты файла паролем, чтобы к нему можно было получить доступ только при заданном пароле.

Моя библиотека внедряется в анонимный процесс, поэтому у меня нет контроля над вызывающей стороной, и я вижу, что анонимный процесс не проверяет fd перед его использованием.В конечном итоге используется файл, который использует моя библиотека.

Пожалуйста, не жалуйтесь на вопросы дизайна.Пожалуйста, просто сосредоточьтесь на проблеме.

Ответы [ 2 ]

1 голос
/ 28 мая 2019

Звучит так, как будто вы внедряете библиотеку в процесс с другой моделью ограниченной памяти, и ваша библиотека несовместима.Вы можете попробовать использовать dup2(), чтобы переместить свои собственные ручки к действительно высоким значениям и надеяться, что это сработает.

0 голосов
/ 28 мая 2019

Через блокировку мьютекса и сделать так, чтобы, если поток хочет получить доступ к файлу, он должен сделать это через эту функцию?

...