نوشته شده توسط
maarek
سلام،
دوستان همانطور که در عنوان پست مشخص است در رابطه با system call به نام select اطلاعات میخواستم. کسی میتونه برام توضیح بده که چیکار میکنه و کجاها استفاده میشه؟
http://man7.org/linux/man-pages/man2/select.2.html
خواهش میکنم نیاید لینک بدید، اگر تجربه کار باهاش دارید توضیح بدید چون خوندم متوجه نشدم!
تصور کنید که یک سوکت آماده برای ارسال اطلاعات دارید جهت تشخیص این موضوع که سوکت مورد نظر آمادگی ارسال اطلاعات را دارد می توانید از select استفاده کنید.یعنی هم میتوانید تا زمان اعلام آمادگی سوکت فرآیند مورد نظر را بلاک کنید وهم می توانید از یک تایم مشخص برای این کار استفاده کنید.
تقریبا اگر از استانداردهای posix استفاده میکنید قطعا باید از چنین دستورات کنترلی I/O هم استفاده کنید
البته می توانید تمامی عملیاتهای I/O در سیستم عامل لینوکس را کنترل کنید.
یک مثال ساده...
struct timeval tWait;
tWait.tv_sec= nTimeOut / 1000;
tWait.tv_usec= (nTimeOut - tWait.tv_sec * 1000) * 1000;
fd_set writefds;
FD_ZERO(&writefds);
FD_SET(m_Sock,&writefds);
select(m_Sock+1,NULL,&writefds,NULL,&tWait);
if(! FD_ISSET(m_Sock,&writefds)){
return(-1);
}
if(sendto(m_Sock,...){
//...
}