Создание файла «вовремя» в файловой системе - PullRequest
0 голосов
/ 21 марта 2019

У меня есть теоретическая проблема, которую я пытаюсь решить.

У меня есть система, которая может ссылаться на файлы в локальной файловой системе. Затем он может проанализировать эти файлы и собрать некоторые данные из них. Файл должен уже существовать, даже если он пуст. Система будет повторно открывать файл каждый раз, когда она включается, и в этот момент она будет видеть значения внутри файла, если они были добавлены.

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

abc123 | hello | world
xyz987 | goodbye | earth

... будет в порядке, где abc123 и xyz987 - блокировка строки, используемая для обеспечения безопасности на уровне строки.

Итак, открытие файла - это то, что определяет, какие данные помещаются в него / возвращаются из него.

Содержимое будет определяться какой-либо внешней службой (REST, RPC, не имеет значения).

Итак, open file => call some service which returns data => data gets put into file => return file handle. На самом деле помещать данные в файл необязательно, если данные доступны в нисходящем направлении.

Я подозреваю, что это требует изменений на уровне операционной системы, так что процесс read a file на самом деле является выполнением, за которым следует открытие. Затем этот файл может быть исполняемым сценарием оболочки, который по совпадению называется file.json. Когда происходит read the file, он может выполнить сценарий, который превращается в ответ JSON. А затем, когда файл закрывается, он снова забивается в скрипт волшебной оболочки.

Точно так же, делая file.json символической ссылкой, указывающей либо на файл json, либо на сценарий оболочки, и имея открытый ключ для установки ссылки на одну для выполнения, а затем на другую для открытия.

Есть ли что-нибудь подобное, которое уже существует? Есть ли лучший, более простой способ более высокого уровня? Это в системе Linux (Ubuntu), если это имеет значение. Я предполагаю, что это может превратиться в отдельную сборку с этим хакерским открытым трюком, добавленным на уровне ОС, но я надеюсь, что это намного проще. Язык и прочее открыты для всего.

Примечание: это тривиально, если файл был вместо этого конечной точкой сети. http://example.com/path/to/file.json сделать все это легко. Проблема в том, что это нужно делать на уровне файловой системы, предположительно, самой ОС, как если бы вы сделали File > Open, например.

...