Как ничего не записать в виртуальный файл
Я создал виртуальный файловый драйвер, который принимает данные из файла. Этот вход сохраняется внутри (помимо всего прочего, что происходит) и записывается на доступ к файлу чтения.
Теперь, когда я записываю пустую строку или блок данных в этот файл, кажется, что обработчик записи не вызывается. Это не имеет смысла на первый взгляд, но на второй взгляд. смотреть на
echo -n "" > somefile
это очищает содержимое файла. Мне нужно то же самое для виртуального файла, потому что я хочу сказать драйверу: "Эй, теперь для тебя больше нет данных".
У меня есть возможность вызвать обработчик записи с пустой информацией?
Отправка определенной escape-последовательности не вариант, потому что данные являются двоичными, и я не могу назначить значение, которое будет рассматриваться как "пустое".
1 ответ
Во-первых, может быть плохим вкусом добавлять двоичные псевдофайлы в /proc/
, Рассматривали ли вы сделать их текстовыми, как большинство псевдофайлов в /proc/
являются? Дополнительные затраты на анализ некоторых текстовых псевдофайлов чаще всего пренебрежимо малы (а системному администратору действительно нравится иметь текстовые псевдофайлы в /proc/
это можно прочитать без особых вредных побочных эффектов).
Тогда вы можете использовать системный вызов ftruncate(2) (но я не знаю, работает ли он на /proc/
pseudofiles). Затем вы будете использовать команду truncate(1), например:
truncate /proc/your_weird_pseudo_file
Возможно, это может не сработать (я понятия не имею, поддерживает ли файловая система procfs это)
В качестве альтернативы (но это некрасиво), предоставьте другой псевдофайл для очистки некоторого состояния, так что ваш пользователь сделает:
echo 1 > /proc/clear_your_weird_state