2010-10-30 45 views

Trả lời

47

EAGAIN thường được nâng lên khi thực hiện non-blocking I/O. Nó có nghĩa là "hiện không có sẵn dữ liệu, hãy thử lại sau".

might (hoặc might not) được giống như EWOULDBLOCK, có nghĩa "chủ đề của bạn sẽ phải ngăn chặn để làm điều đó".

+1

Theo IEEE 1003.1, 'EAGAIN' có thể giống với' EWOULDBLOCK'. http://www.opengroup.org/onlinepubs/000095399/basedefs/errno.h.html –

+1

@larsman, "có thể" là từ tác dụng ở đây :) –

+6

Ý của tôi là: một chương trình di động không nên dựa vào chúng khác biệt. –

0

Theo this, điều đó có nghĩa là "Hoạt động sẽ khiến quá trình bị tạm ngưng".

12

Sử dụng 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. 
+0

Xuống đến lõi .. như nó;) – brunsgaard

+0

Xem 'man 3 errno' thay vì RHEL/Centos. –

3

gì nó có nghĩa là ít quan trọng. Những gì nó ngụ ý:

  • gọi hệ thống của bạn không thành
  • có gì xảy ra (các cuộc gọi hệ thống là nguyên tử, và điều này chỉ không xảy ra)
  • bạn thể thử lại lần nữa (nó có thể thất bại lại , có thể có kết quả khác)
  • hoặc bạn có thể chọn cách khác.

Toàn bộ quy trình về EAGAIN là quy trình của bạn không bị chặn bên trong cuộc gọi hệ thống; nó có quyền lựa chọn: thử lại hoặc làm điều gì đó hữu ích.