Есть ли способ сделать так, чтобы когда программы пытались выполнить seek()
операции с именованным каналом, он возвращался успешно (но действовал так, как если бы канал был пустым файлом) вместо «Незаконного поиска»?
У меня есть все последние записи в моей системе, хранящиеся в базе данных SQLite, у меня нигде нет файлов. Однако есть несколько программ, которые имеют проблемы с этим. Есть 2 конкретных случая;
- Программа хочет записать в файл журнала, который syslog-ng создал как именованный канал и который читает. Программа хочет выполнить
seek()
по какой-то причине, а затем не удается. - Программа (например, denyhosts или fail2ban) хочет читать из файла журнала, который syslog-ng создал как именованный канал и в который пишет. Программа хочет выполнить
seek()
на нем и терпит неудачу.
В идеале мне бы хотелось, чтобы эти запросы вели себя так, как будто именованный канал был просто пустым файлом. Я не вижу никакой причины, по которой программе, пишущей журнал, в любом случае нужно будет выполнять поиск, просто нужно открыть файл для добавления и начать запись. Я могу понять, почему чтение программы хотело бы искать, чтобы оно могло возобновить свою последнюю позицию, и поэтому я бы хотел, чтобы он вел себя так, как если бы файл был пуст (как будто он был усечен).
Так есть ли какая-либо опция, которая может быть установлена для именованных каналов, чтобы заставить их вести себя таким образом? Если нет, то есть ли режим, который можно установить, когда syslog-ng открывает канал, чтобы он так себя вел (я открыт для внесения изменений в код)? Или я до ручья?