gpt4 book ai didi

c - 在 ENOSPC 之后写入描述符是否安全

转载 作者:行者123 更新时间:2023-12-02 01:37:08 24 4
gpt4 key购买 nike

想象一下这种情况:

  • 一个进程 (A) 通过创建大文件不断地将数据写入磁盘,并使用单独的 write() 命令将数据附加到该文件
  • 另一个进程(B),不断从磁盘中删除文件
  • 假设 (B) 删除数据的速度足够快,以至于 (A) 有空间可以写入。但是,不能保证。
  • 想象一下 (A) 尝试写入一个打开的描述符并获得 ENOSPC。因为 (A) 知道 (B) 应该腾出一些空间,所以 (A) 想重试写入。

问题:对于 (A) 来说,在收到 ENOSPC 后,尝试写入它获得 ENOSPC 的相同描述符是否安全?我找不到任何关于它的信息,我想知道它是否可能取决于操作系统、文件系统等。

最佳答案

ENOSPC 没有什么特别之处。它表明写入失败,失败的原因与设备没有足够的可用空间来完成操作有关。它不会使文件描述符处于错误或未定义的状态。文件描述符保持与调用前相同的状态。您可以放心地继续尝试,想做多少就做多少。

请注意,您应该为短写做好准备。如果写入系统调用没有足够的空间来完成操作而不是使用 ENOSPC 失败,它可以尽可能多地写入并成功返回。在这种情况下,返回值将指示写入的实际字节数。

关于c - 在 ENOSPC 之后写入描述符是否安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30633622/

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