Python mmap ctypes - только чтение

Я думаю, что у меня противоположная проблема, как описано здесь . У меня есть один процесс, записывающий данные в журнал, и я хочу, чтобы его прочитал второй процесс, но я не хочу, чтобы второй процесс мог изменять содержимое. Это потенциально большой файл, и мне нужен произвольный доступ, поэтому я использую модуль mmap python.

Если я создаю mmap как чтение / запись (для второго процесса), у меня нет проблем с созданием объекта ctypes как "просмотр" объекта mmap с помощью from_buffer. При беглом взгляде на c-код, похоже, что это приведение, а не копия, чего я и хочу. Однако это прерывается, если я делаю mmap ACCESS_READ, генерируя исключение, что from_buffer требует прав записи.

Я думаю Я хочу использовать вместо этого метод ctypes from_address (), который, похоже, не требует записи доступ. Возможно, мне не хватает чего-то простого, но я не уверен, как получить адрес местоположения в mmap. Я знаю, что могу использовать ACCESS_COPY (так что операции записи отображаются в памяти, но не сохраняются на диске), но я бы предпочел оставить данные только для чтения.

Есть предложения?

6
задан Community 23 May 2017 в 11:59
поделиться