Czy można to zrobić tak, aby programy próbujące wykonywać seek()
operacje na nazwanym potoku powróciły pomyślnie (ale działały tak, jakby potok był pustym plikiem) zamiast „Nielegalne wyszukiwanie”?
Mam ostatnie logowanie do mojego systemu przechowywane w bazie danych SQLite, nigdzie nie mam plików. Jednak istnieje kilka programów, które mają z tym problem. Istnieją 2 konkretne przypadki;
- Program chce zapisać do pliku dziennika, który syslog-ng utworzył jako nazwany potok i odczytuje. Program chce wykonać z
seek()
jakiegoś powodu, a następnie nie powiedzie się. - Program (taki jak denyhosts lub fail2ban) chce czytać z pliku dziennika, który syslog-ng utworzył jako nazwany potok i do którego pisze. Program chce wykonać
seek()
na nim i kończy się niepowodzeniem.
Idealnie chciałbym, żeby te zachowywały się tak, jakby nazwany potok był tylko pustym plikiem. Nie widzę żadnego powodu, dla którego program piszący dziennik musiałby przeprowadzić wyszukiwanie, powinien po prostu otworzyć plik w celu dołączenia i rozpoczęcia pisania. Rozumiem, dlaczego czytający program chciałby szukać, aby mógł wznowić od swojej ostatniej pozycji, i dlatego chciałbym, aby zachowywał się tak, jakby plik był pusty (jakby został obcięty).
Czy istnieje jakaś opcja, którą można ustawić dla nazwanych potoków, aby zachowywały się w ten sposób? Jeśli nie, czy istnieje tryb, który można ustawić, gdy syslog-ng otwiera potok, aby zachowywał się w ten sposób (jestem otwarty na wprowadzanie zmian w kodzie)? A może jestem potokiem?