Existe alguma maneira de fazê-lo para que, quando os programas tentem executar seek()
operações em um pipe nomeado, ele volte com êxito (mas aja como se o pipe fosse um arquivo vazio) em vez de 'Busca ilegal'?
Tenho todo o último logon do meu sistema armazenado em um banco de dados SQLite, não tenho arquivos em lugar nenhum. No entanto, existem alguns programas que têm problemas com isso. Existem 2 casos específicos;
- Um programa deseja gravar em um arquivo de log que o syslog-ng criou como um pipe nomeado e está lendo. O programa deseja executar um
seek()
por algum motivo e depois falha. - Um programa (como denyhosts ou fail2ban) deseja ler de um arquivo de log que o syslog-ng criou como um pipe nomeado e está gravando. O programa quer executar um
seek()
e falhar.
Idealmente, eu gostaria que essas buscas se comportassem como se o pipe nomeado fosse apenas um arquivo vazio. Não vejo nenhuma razão para que um programa que esteja escrevendo um log precise executar uma busca de qualquer maneira, ele deve apenas abrir o arquivo para anexar e começar a escrever. Eu posso ver por que uma leitura de programa gostaria de procurar, para que pudesse retomar de sua última posição, e gostaria que ele se comportasse como se o arquivo estivesse vazio (como se tivesse sido truncado).
Então, existe alguma opção que pode ser definida em pipes nomeados para que eles se comportem dessa maneira? Caso contrário, existe um modo que pode ser definido quando o syslog-ng abre o canal para que ele se comporte dessa maneira (estou aberto a fazer alterações no código)? Ou eu estou subindo um riacho?