socket-programming:poll
تفاوتها
تفاوت دو نسخهٔ متفاوت از صفحه را مشاهده میکنید.
| socket-programming:poll [2024/06/18 00:32] – ایجاد شد pejman | socket-programming:poll [2024/06/18 01:04] (فعلی) – حذف شد pejman | ||
|---|---|---|---|
| خط 1: | خط 1: | ||
| - | ====== تابع ()poll ====== | ||
| - | |||
| - | این تابع مجموعه ای از file descriptor ها را بررسی میکند که آیا آماده نوشتن یا خواندن هستند یا نه | ||
| - | |||
| - | <code C> | ||
| - | #include < | ||
| - | |||
| - | int poll(struct pollfd *fds, nfds_t nfds, int timeout); | ||
| - | </ | ||
| - | |||
| - | ابتدا باید file descriptor های مورد نظر مان را در استراکچر از نوع pollfd پر کنیم | ||
| - | |||
| - | <code C> | ||
| - | struct pollfd { | ||
| - | int | ||
| - | short events; | ||
| - | short revents; | ||
| - | }; | ||
| - | </ | ||
| - | |||
| - | فیلدهای event و revent درواقع bitwise-OR از مقادیر زیر هستند | ||
| - | |||
| - | POLLIN | ||
| - | 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
