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

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

Можно ли сделать такую ​​вещь? Я попытался fcntl.flock (), но кажется, что эта блокировка работает только для моего приложения. Другие программы, такие как текстовые редакторы, могут записывать в файл без проблем.

Тестовый пример

#!/usr/bin/env python3

import time
import fcntl

with open('./somefile.txt', 'r') as f:
    # accquire lock
    fcntl.flock(f, fcntl.LOCK_EX | fcntl.LOCK_NB)

    # some long running operation
    # file should be protected from writes
    # of other programs on this computer
    time.sleep(20)

    # release lock
    fcntl.flock(f, fcntl.LOCK_UN)

Как заблокировать файл для каждого приложения в системе, кроме моего?

1 Ответ

0 голосов
/ 09 января 2019

Flock является рекомендательной блокировкой и игнорируется, если специально не проверено.

Существуют другие альтернативы, которые делают обязательную блокировку такой, как эта. Находится в этой теме и там есть еще несколько альтернатив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...