在linux中,是否可以对常规文件进行部分读取

时间:2012-11-28 20:53:40

标签: c linux

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

  1. read()如何确定EOF,特别是在可以同时修改基础文件的情况下?

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

  3. 应用程序将使用Ex4文件系统

    在Linux 2.6.x上用C语言编写

    更新: 下面的链接指向修补程序,它在读取和写入之前锁定EXT4中的inode。 http://patchwork.ozlabs.org/patch/91834/

1 个答案:

答案 0 :(得分:4)

  

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

当您尝试read()超过文件末尾时,它会返回EOF。您仍然可以向后和向前搜索文件并再次读取(仅当文件描述符引用文件时,而不是管道或套接字)。

  

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

很可能。