EAGAIN 是什么意思?

在标题中 EAGAIN 是什么意思?

90059 次浏览

EAGAIN 在执行 异步多工文件描述符时经常会升高,表示 “现在没有可用的数据,稍后再试”

也许吧(或 也许不会)与 EWOULDBLOCK相同,即 “你的线程将不得不阻止,为了做到这一点”

根据 这个的说法,这意味着“操作将导致流程暂停。”

使用 man 2 intro | less -Ip EAGAIN:

     35 EAGAIN Resource temporarily unavailable.  This is a temporary condi-
tion and later calls to the same routine may complete normally.

它的含义不那么重要,它的含义:

  • 你的系统调用失败了
  • 什么都没有发生(系统调用是原子的,而这个系统调用就是没有发生)
  • 可以再试一次(它可能会失败 再来一次,可能会有不同的结果)
  • 或者你选择另一种方式。

关于 EAGAIN的全部事情是,您的进程不会在系统调用内被阻塞; 它有权选择: 重试或者做一些有用的事情。