¿Hay alguna manera de hacerlo de modo que cuando los programas intenten realizar seek()
operaciones en una tubería con nombre vuelva con éxito (pero actúe como si la tubería fuera un archivo vacío) en lugar de 'Búsqueda ilegal'?
Tengo cada último bit de registro en mi sistema almacenado en una base de datos SQLite, no tengo archivos en ningún lado. Sin embargo, hay algunos programas que tienen problemas con esto. Hay 2 casos específicos;
- Un programa quiere escribir en un archivo de registro que syslog-ng ha creado como una tubería con nombre y está leyendo. El programa quiere realizar un
seek()
por alguna razón y luego falla. - Un programa (como denyhosts o fail2ban) quiere leer de un archivo de registro que syslog-ng ha creado como una canalización con nombre y en el que está escribiendo. El programa quiere realizar un
seek()
en él y falla.
Idealmente, me gustaría que estos se comporten como si la tubería con nombre fuera solo un archivo vacío. No puedo ver ninguna razón por la cual un programa que escribe un registro necesitaría realizar una búsqueda de todos modos, solo debe abrir el archivo para agregarlo y comenzar a escribir. Puedo ver por qué querría buscar una lectura de programa, para que pueda reanudar desde su última posición, y me gustaría que se comporte como si el archivo estuviera vacío (como si hubiera sido truncado).
Entonces, ¿hay alguna opción que se pueda establecer en canalizaciones con nombre para que se comporten de esta manera? Si no, ¿hay un modo que se puede configurar cuando syslog-ng abre la tubería para que se comporte de esta manera (estoy abierto a hacer cambios en el código)? ¿O estoy en un arroyo?