У меня есть теоретическая проблема, которую я пытаюсь решить.
У меня есть система, которая может ссылаться на файлы в локальной файловой системе. Затем он может проанализировать эти файлы и собрать некоторые данные из них. Файл должен уже существовать, даже если он пуст. Система будет повторно открывать файл каждый раз, когда она включается, и в этот момент она будет видеть значения внутри файла, если они были добавлены.
Мне нужно, чтобы данные в этом файле отличались в зависимости от того, кто его открывает. Каждый, кто использует систему, откроет один и тот же файл. Может работать хак на уровне строк, когда каждое открытие файла действует как добавление, и каждая запись помечается каким-либо идентифицирующим ключом ... что-то вроде:
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
, например.