Existe-t-il un moyen de faire en sorte que lorsque les programmes tentent d'effectuer des seek()
opérations sur un canal nommé, il reviendra avec succès (mais agira comme si le canal était un fichier vide) au lieu de «Recherche illégale»?
J'ai tous les derniers morceaux de connexion sur mon système stockés dans une base de données SQLite, je n'ai aucun fichier nulle part. Cependant, il existe quelques programmes qui ont des problèmes avec cela. Il y a 2 cas spécifiques;
- Un programme veut écrire dans un fichier journal que syslog-ng a créé en tant que canal nommé et lit à partir de. Le programme veut effectuer un
seek()
pour une raison quelconque, puis échoue. - Un programme (tel que denyhosts ou fail2ban) souhaite lire à partir d'un fichier journal que syslog-ng a créé en tant que canal nommé et dans lequel il écrit. Le programme veut effectuer un
seek()
sur et échoue.
Idéalement, j'aimerais simplement que ces recherches se comportent comme si le canal nommé n'était qu'un fichier vide. Je ne vois aucune raison pour laquelle un programme écrivant un journal devrait de toute façon effectuer une recherche, il devrait simplement ouvrir le fichier pour l'ajouter et commencer à écrire. Je peux voir pourquoi une lecture de programme voudrait chercher, afin qu'elle puisse reprendre à partir de sa dernière position, et je voudrais donc qu'elle se comporte comme si le fichier était vide (comme s'il avait été tronqué).
Y a-t-il donc une option qui peut être définie sur les canaux nommés pour qu'ils se comportent de cette façon? Sinon, y a-t-il un mode qui peut être défini lorsque syslog-ng ouvre le canal pour qu'il se comporte de cette façon (je suis prêt à faire des changements de code)? Ou suis-je dans un ruisseau?