EWOULDBLOCK
和 EAGAIN
在大多数操作系统和库中是可以互换使用的,它们都表示 "Resource temporarily unavailable"(资源暂时不可用),即当前的 I/O 操作无法立即完成,但可以稍后重试
经典场景:非阻塞 I/O 操作
当以非阻塞模式(例如使用 O_NONBLOCK
)打开文件描述符或套接字时,如果你尝试执行读写操作,而没有足够的数据可供读取或无法立即写入数据(自身没有数据了或缓冲区满了写不进去),可能会返回 -1
并将 errno
设置为 EWOULDBLOCK
或 EAGAIN
,告诉你操作无法立即完成,稍后重试。