对于同时使用多个读者和一个写者访问一个常规文件,Linux(或一般的Unix衍生产品)做出了哪些保证?
特别是,有一位作家写信给结尾一个文件,许多读取器尝试读取该文件,直到写入器(通过其他方式)指示写入已完成(即,读取器忽略 EOF)。这样可以吗?
我知道 SE 网络上还有其他一些类似的问题,但没有一个给出明确的答案。
答案1
每个读取器都是一个独立的进程。在读取循环期间,它将读取自上次读取文件以来的最新数据量……假设它保持文件句柄打开。这将独立于其他读取器。我不确定您所说的“保证”是什么意思,但只要文件句柄保持有效,所有读取器都将获得数据。
它也将独立于作者。
举个例子,尝试一下...打开几个终端会话,在每个会话中运行“tail -F /var/log/audit.log”,然后触发一些会导致审计条目的事件...例如,打开一个新的到服务器的 ssh 会话。
您将看到所有 tail -F 都显示文件中的更改。许多读取器 (tail) 和一个写入器 (rsyslogd)。