有什么方法可以使程序在尝试对seek()
命名管道执行操作时成功返回(但就像管道是空文件一样)而不是“非法查找”吗?
我在系统上的所有最后一点记录都存储在SQLite数据库中,而我在任何地方都没有文件。但是,有些程序对此有麻烦。有2种具体情况;
- 程序要写入syslog-ng作为命名管道创建并正在读取的日志文件。程序
seek()
由于某种原因想要执行a ,然后失败。 - 程序(例如denyhosts或fail2ban)想要从syslog-ng创建为命名管道并正在写入的日志文件中读取。该程序要对其执行操作
seek()
并失败。
理想情况下,我希望这些搜索的行为就像命名管道只是一个空文件一样。我看不到任何原因为什么写日志的程序仍然需要执行查找,它应该只打开文件进行追加并开始写。我可以看到为什么要读取程序,以便它可以从其最后一个位置恢复,所以我希望它的行为就像文件是空的(就像被截断一样)。
那么,可以在命名管道上设置一些选项来使它们以这种方式运行吗?如果没有,那么在syslog-ng打开管道以使其具有这种行为时可以设置一种模式(我愿意进行代码更改)?还是我在一条小河上?