プログラムseek()
が名前付きパイプで操作を実行しようとすると、「違法シーク」の代わりに成功します(ただし、パイプが空のファイルであるかのように振る舞う)ようにする方法はありますか?
私のシステムの最後の少しのログはSQLiteデータベースに保存されており、どこにもファイルはありません。ただし、これに問題があるプログラムがいくつかあります。2つの特定のケースがあります。
- プログラムは、syslog-ngが名前付きパイプとして作成して読み取り中のログファイルに書き込みたいと考えています。プログラムは
seek()
何らかの理由でaを実行したいのに失敗します。 - プログラム(denyhostsやfail2banなど)は、syslog-ngが名前付きパイプとして作成して書き込み中のログファイルから読み取りたいと考えています。プログラムはそれを実行しようとして
seek()
失敗します。
理想的には、これらのシークが名前付きパイプが単なる空のファイルであるかのように動作するようにしたいのです。とにかく、ログを書き込むプログラムがシークを実行する必要がある理由がわかりません。追加のためにファイルを開いて書き込みを開始するだけです。プログラムの読み取りが最後の位置から再開できるように、プログラム読み取りがシークしたい理由がわかります。したがって、ファイルが空のように(切り捨てられたように)動作するようにします。
名前付きパイプにこのように動作させるために設定できるオプションがありますか?そうでない場合、syslog-ngがパイプを開いてこのように動作させるときに設定できるモードはありますか?それとも、私は小川を上がっていますか?