0

我需要编写一个以非常快的速度将日志条目吐出到常规文件的应用程序。此外,还有另一个进程可以同时读取同一个文件,其他进程将写入它。我有以下问题

  1. read() 如何确定 EOF,特别是在底层文件可能同时被修改的情况下?

  2. read() 是否可以从其他进程写入返回部分写入的数据?例如,写过程写了半行,读会选择那半行并返回?

该应用程序将使用 Ex4 文件系统在 linux 2.6.x 上用 C 语言编写

更新:下面的链接指向补丁,在读写之前将 inode 锁定在 EXT4 中。 http://patchwork.ozlabs.org/patch/91834/

4

1 回答 1

4

read() 如何确定 EOF,特别是在底层文件可能同时被修改的情况下?

当您尝试read()越过文件末尾时,它会返回EOF. 您仍然可以来回查找文件并再次读取(仅当文件描述符引用文件而不是管道或套接字时)。

read() 是否可以从其他进程写入返回部分写入的数据?例如,写过程写了半行,读会选择那半行并返回?

很有可能。

于 2012-11-28T21:01:47.113 回答