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

Is it safe to write to a descriptor after ENOSPC

想象一下这种情况:

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

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

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