Wie im Titel, was bedeutet EAGAIN?
Was bedeutet EAGAIN?
David van Dugteren
Frédéric Hamidi
WIEDER wird oft bei Auftritten angehoben nicht blockierende E/A. Es bedeutet “Im Moment sind keine Daten verfügbar, versuchen Sie es später erneut.”.
Es könnte (oder möglicherweise nicht) sei genauso wie EWOULDBLOCK
was bedeutet “Dein Thread müsste dafür blockiert werden”.
-
Gemäß IEEE 1003.1,
EAGAIN
kann dasselbe sein wieEWOULDBLOCK
. opengroup.org/onlinepubs/000095399/basedefs/errno.h.html– Fred Foo
30. Oktober 2010 um 11:09 Uhr
-
Was ich meine ist: Ein portables Programm sollte sich nicht darauf verlassen, dass sie unterschiedlich sind.
– Fred Foo
30. Oktober 2010 um 11:12 Uhr
-
Unter Linux sind EAGAIN und EWOULDBLOCK derselbe Wert, aber wirklich portierbarer Code sollte beide überprüfen.
– Hookenz
27. Mai 2014 um 21:16 Uhr
-
Dies kann daran liegen, dass Sie eine weiche/harte ulimit-Ressource wie Threads, Dateien oder Netzwerkverbindungen erreicht haben.
– Buzut
28. April 2016 um 10:39 Uhr
Verwenden 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.
-
Bis ins Mark … mag es 😉
– brunsgaard
5. März 2015 um 0:41 Uhr
Was es bedeutet, ist weniger wichtig. Was es bedeutet:
- Ihr Systemaufruf ist fehlgeschlagen
- nichts ist passiert (Systemaufrufe sind atomar, und dieser ist einfach nicht passiert)
- Sie könnte versuchen Sie es erneut (es könnte fehlschlagen wiedermöglicherweise mit einem anderen Ergebnis)
- oder du könnte anders wählen.
Das Ganze über EAGAIN
ist, dass Ihr Prozess nicht innerhalb des Systemaufrufs blockiert ist; es hat das Recht zu wählen: Entweder es erneut versuchen oder etwas Nützliches tun.
-
Haben Sie eine Quelle, die die Behauptung “Systemaufrufe sind atomar” unterstützt? Ich finde widersprüchliche Ergebnisse
– sehen
10. Juli 2018 um 11:20 Uhr
Entsprechend Dieses bedeutet “Die Operation hätte dazu geführt, dass der Prozess ausgesetzt wurde.”