gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:00:26 24 4
gpt4 key购买 nike

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

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

  2. read() 是否有可能从另一个进程 write 返回部分写入的数据?比如写进程写了半行,读会挑那半行返回?

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

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

最佳答案

How does read() determine EOF, specially in the case, where the underlying file could be concurrently being modified?

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

Is it possible for read() to return partially written data from the other process write? For example, the write process wrote half a line and read would pick that half line and return?

很有可能。

关于c - 在 linux 中,是否可以对常规文件进行部分读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13614181/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com