프로그램 seek()
이 명명 된 파이프에서 작업 을 수행하려고 할 때 'Illegal seek'대신 성공 (파이프가 빈 파일 인 것처럼 작동 함) 할 수 있도록하는 방법이 있습니까?
SQLite 데이터베이스에 저장된 시스템에 모든 마지막 로깅이 있으며 파일이 없습니다. 그러나 이것에 문제가있는 몇 가지 프로그램이 있습니다. 두 가지 구체적인 경우가 있습니다.
- 프로그램이 syslog-ng가 명명 된 파이프로 작성하여 읽고있는 로그 파일에 쓰려고합니다. 프로그램이
seek()
어떤 이유로 인해 수행하려고하지만 실패합니다. - 프로그램 (예 : denyhosts 또는 fail2ban)은 syslog-ng가 명명 된 파이프로 작성하여 쓰고있는 로그 파일에서 읽으려고합니다. 프로그램이 수행하려고
seek()
하지만 실패합니다.
이상적으로는 명명 된 파이프가 단지 빈 파일 인 것처럼 행동하려고합니다. 로그를 작성하는 프로그램이 어쨌든 탐색을 수행 해야하는 이유를 알 수 없으므로 추가하기 위해 파일을 열고 쓰기를 시작해야합니다. 프로그램 읽기가 왜 원하는지 알 수 있으므로 마지막 위치에서 다시 시작할 수 있으므로 파일이 비어있는 것처럼 (파일이 잘린 것처럼) 동작하고 싶습니다.
명명 된 파이프에서 이러한 방식으로 동작하도록 설정할 수있는 옵션이 있습니까? 그렇지 않으면 syslog-ng가 파이프를 열어 이런 식으로 작동하도록 설정할 수있는 모드가 없습니다 (코드 변경이 가능합니다)? 아니면 내가 개울입니까?