Как Linux позволяет изменять PDF-файл, когда он открыт в программе просмотра PDF-файлов?

Правильный путь сjqинструментом для действительных документов JSON:

Образецfile1.json:

{
    "socal": "https://xxx.xxxxx.xxx",
    "ip": "xxx.xxx.xxx.xxx",
    "tire_id": "213275925375485",
    "client": {
        "platform": "xx",
        "clientID": "xxxxx",
        "serviceID": "xxxxx",
        "service_id": "XXXX",
        "vendor": "default"
    },
    "locale": "en_US",
    "cdc": {
        "appID": "233262274090443",
        "isdel": "ORdiZBMAQS2ZBCnTwZDZD"
    },
    "attachments": {
        "output": "attachments",
        "public": false
    }
}

Образецfile2.json:

{
    "socal": "https://xxx.xxxxx.xxx",
    "ip": "xxx.xxx.xxx.xxx",
    "tire_id": "1305436516186552",
    "client": {
        "platform": "xx",
        "clientID": "xxxxx",
        "serviceID": "xxxxx",
        "service_id": "XXXX",
        "vendor": "default"
    },
    "locale": "en_US",
    "cdc": {
        "appID": "1164562920689523",
        "isdel": "ORdiZBMAQS2ZBCnTwZDZD"
    },
    "attachments": {
        "output": "attachments",
        "public": false
    }
}

И само решение:

jq -r 'input_filename + " tire_id: \(.tire_id) appID: \(.cdc.appID)"' file*.json

Выход:

file1.json tire_id: 213275925375485 appID: 233262274090443
file2.json tire_id: 1305436516186552 appID: 1164562920689523
15
30.08.2020, 02:35
1 ответ

Это функция используемой вами программы просмотра PDF.

Я подозреваю, что программа просмотра PDF открывает файл, а затем читает/обрабатывает его содержимое. Он не должен закрывать файл, но может.

Затем он устанавливает inotify, что означает, что если кто-то записывает в файл, ваша программа просмотра PDF будет уведомлена.

Когда вы записывали в файл, ваше средство просмотра PDF получило сигнал о том, что просматриваемый файл изменился. Это дает программе просмотра PDF возможность повторно -прочитать файл и повторно -обработать содержимое.

Нечто подобное возможно в Windows, но используемая вами программа просмотра PDF просто не реализовала это. Когда ваше средство просмотра PDF в Windows открывает файл PDF, оно по умолчанию получает эксклюзивный доступ к файлу PDF, что приведет к тому, что другая программа получит сообщение об ошибке при попытке открыть файл для записи. Зритель должен будет сделать системные вызовы, чтобы явно отказаться от монопольного доступа, чтобы работать аналогично версии для Linux.


Я нашел интересную статью в Википедии о блокировке файлов. Там написано:

Windows inherits the semantics of share-access controls from the MS-DOS system, where sharing was introduced in MS-DOS 3.3. Thus, an application must explicitly allow sharing when it opens a file; otherwise it has exclusive read, write, and delete access to the file until closed (other types of access, such as those to retrieve the attributes of a file are allowed.)

Там же говорится:

Unix-like operating systems (including Linux and Apple's macOS) do not normally automatically lock open files.

40
18.03.2021, 23:09

Теги

Похожие вопросы