2016-10-07 2 views
1

Я хочу, чтобы определенный файл записывался всякий раз, когда какая-либо программа пытается его прочитать. Например, я создаю пустой файл или заполняется нулями, программа пытается прочитать N байтов, начиная с M-го байта файла (используя системные вызовы для чтения/поиска), и мне нужно заставить ожидание чтения ждать, пока я напишите запрошенные байты в файл, чтобы syscall успешно прочитал записанные байты без ошибок. Файл должен выглядеть как тот, который программа ожидает прочитать. Или есть способ «отправить» необходимые байты в вызов read(), не записывая их непосредственно в файл до этого? Мне нужно, чтобы он работал с любой программой без редактирования ее кода.Write file on read request - Linux

ответ

-1

Это должно быть сделано путем перехвата запросов на чтение файловой системы на уровне ядра. Простейшим подходом было бы использовать FuseFS для реализации фильтра файловой системы в пользовательском пространстве. Другие программы будут читать из вашей файловой системы, давая вам полный контроль над тем, что они читают.

-1

Вам понадобится создать собственный протокол синхронизации между устройством чтения и записи с использованием некоторого механизма IPC.

В качестве альтернативы вы можете сделать это в базе данных, используя хранимые процедуры.