Comme dans le titre, que signifie EAGAIN?Que signifie EAGAIN?
Répondre
EAGAIN est souvent élevé lors de l'exécution non-blocking I/O. Cela signifie "il n'y a pas de données disponibles pour le moment, réessayez plus tard".
Il might (ou might not) être le même que EWOULDBLOCK
, ce qui signifie « votre fil devrait bloquer afin de le faire ».
Selon this, cela signifie que "l'opération aurait entraîné la suspension du processus".
En utilisant 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.
Jusqu'au cœur .. comme ça;) – brunsgaard
Voir 'man 3 errno' à la place sur RHEL/Centos. –
Ce que cela signifie est moins important. Qu'est-ce que cela implique:
- votre appel système a échoué
- rien ne se passe (appels système sont atomiques, et celui-ci n'a tout simplement pas eu lieu)
- vous pouvez essayer à nouveau (il pourrait manquer nouveau , éventuellement avec un résultat différent)
- ou pourrait choisir autrement.
La seule chose à propos de EAGAIN
est que votre processus n'est pas bloqué dans l'appel système; il a le droit de choisir: soit réessayer, soit faire quelque chose d'utile.
Selon IEEE 1003.1, 'EAGAIN' peut être identique à' EWOULDBLOCK'. http://www.opengroup.org/onlinepubs/000095399/basedefs/errno.h.html –
@larsman, "may" étant le mot clé ici :) –
Ce que je veux dire est: un programme portable ne devrait pas compter sur eux étant distinct. –