ابزار کاربر

ابزار سایت


socket-programming:poll

تفاوت‌ها

تفاوت دو نسخهٔ متفاوت از صفحه را مشاهده می‌کنید.

پیوند به صفحه‌ی تفاوت‌ها

socket-programming:poll [2024/06/18 00:32] – ایجاد شد pejmansocket-programming:poll [2024/06/18 01:04] (فعلی) – حذف شد pejman
خط 1: خط 1:
-====== تابع ()poll ====== 
- 
-این تابع مجموعه ای از file descriptor ها را بررسی میکند که آیا آماده نوشتن یا خواندن هستند یا نه 
- 
-<code C> 
-#include <poll.h> 
- 
-int poll(struct pollfd *fds, nfds_t nfds, int timeout); 
-</code> 
- 
-ابتدا باید file descriptor های مورد نظر مان را در استراکچر از نوع pollfd پر کنیم 
- 
-<code C> 
-struct pollfd { 
-    int   fd;         // the socket descriptor 
-    short events;     // bitmap of events we're interested in 
-    short revents;    // when poll() returns, bitmap of events that occurred 
-}; 
-</code> 
- 
-فیلدهای event و revent درواقع bitwise-OR از مقادیر زیر هستند 
- 
-  POLLIN  : data is ready to recv() on this socket 
-  POLLOUT : send()ing data to this socket is possible without blocking 
- 
-در [[poll]] مقدار منفی برای timeout به معنی بینهایت است 
- 
-مقدار بازگشتی [[poll]] تعداد file descriptor هایی است که event مورد نظر در آنها اتفاق افتاده، یعنی آماده خواندن یا نوشتن هستند. 
- 
-باید در آرایه fds برای file descriptor های جدید (که معمولا ضمن فراخوانی [[accept]] ایجاد می شوند) جا باشد و گرنه باید با [[realloc]] به fds حافظه اضافه کنیم 
- 
-برای پاک کردن file descriptor ها از آرایه fds می توان آخرین عضو آرایه را جای آن کپی کرد و یک عدد از طوا آرایه کم کرد. یا می توان به جای آن یک عدد منفی نوشت تا [[poll]] آن را نادیده بگیرد. 
- 
- 
  
socket-programming/poll.1718658149.txt.gz · آخرین ویرایش: 2024/06/18 00:32 توسط pejman

به جز مواردی که ذکر می‌شود، مابقی محتویات ویکی تحت مجوز زیر می‌باشند: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki