`poll`º¯Êý²»½öÖ§³Ö¼à¿Ø¸ü¶àµÄÎļþÃèÊö·û£¬¶øÇÒ²»ÊÜ`select`º¯ÊýÄÇÑùµÄÎļþÃèÊö·ûÊýÁ¿ÏÞÖÆ£¬Ê¹µÃËüÔڸ߲¢·¢ºÍI/OÃܼ¯ÐÍÓ¦ÓÃÖбíÏÖ³öÉ«
È»¶ø£¬ÔÚʹÓÃ`poll`º¯Êýʱ£¬ÎÒÃǾ³£»áÓöµ½`POLLERR`ʼþ£¬ÕâһʼþµÄ´¦ÀíºÍÀí½â¶ÔÓÚ±£Ö¤ÏµÍ³µÄÎȶ¨ÐԺͿɿ¿ÐÔÖÁ¹ØÖØÒª
Ò»¡¢`poll`º¯Êý¸ÅÊö
`poll`º¯ÊýµÄÔÐͶ¨ÒåÔÚ`
- `nfds`£ºÒª¼àÊÓµÄÎļþÃèÊö·û¸öÊý
- `timeout`£ºµÈ´ýµÄ³¬Ê±Ê±¼ä£¨ÒÔºÁÃëΪµ¥Î»£© `-1`±íʾÎÞÏ޵ȴý£¬`0`±íʾÁ¢¼´·µ»Ø£¨·Ç×èÈûģʽ£©
`pollfd`½á¹¹Ì嶨ÒåÈçÏ£º
struct pollfd {
int fd; // Òª¼àÊÓµÄÎļþÃèÊö·û
short events; // µÈ´ýµÄʼþ
short revents; // ʵ¼Ê·¢ÉúµÄʼþ
};
ÆäÖУ¬`fd`ÊÇÒª¼àÊÓµÄÎļþÃèÊö·û£¬`events`ÊǵȴýµÄʼþÀàÐÍ£¬`revents`ÊÇ`poll`º¯Êý·µ»ØÊ±Êµ¼Ê·¢ÉúµÄʼþ ³£¼ûµÄʼþÀàÐͰüÀ¨£º
- `POLLIN`£ºÓÐÊý¾Ý¿É¶Á
- `POLLOUT`£º¿ÉÒÔдÊý¾Ý£¨²»»á×èÈû£©
- `POLLERR`£º·¢Éú´íÎó
- `POLLHUP`£º¹ÒÆðʼþ£¨¶Ô·½¹Ø±ÕÁ¬½Ó£©
- `POLLNVAL`£º·Ç·¨µÄÎļþÃèÊö·û
`poll`º¯ÊýµÄ·µ»ØÖµ£º
- ³É¹¦Ê±£¬·µ»Ø´óÓÚ0µÄÖµ£¬±íʾÓжàÉÙÎļþÃèÊö·ûÓÐʼþ·¢Éú
- Èç¹û³¬Ê±ÇÒÎÞʼþ·¢Éú£¬·µ»Ø0
- ʧ°Üʱ£¬·µ»Ø-1£¬²¢ÉèÖÃ`errno`
¶þ¡¢`POLLERR`ʼþÏê½â
`POLLERR`ʼþ±íʾÔÚÎļþÃèÊö·ûÉÏ·¢ÉúÁË´íÎóÌõ¼þ£¬ËüÖ»ÔÚ`revents`Öзµ»Ø£¬ÔÚ`events`ÖлᱻºöÂÔ ÕâÒ»´íÎóλͨ³£ÔÚÒÔϼ¸ÖÖÇé¿öÏ»ᱻÉèÖãº
1.±¨ÎÄ´íÎó£ºÈç¹ûÍø¿¨»òÆäËûI/OÉ豸ÊÕµ½´íÎó»ò²»ÍêÕûµÄ±¨ÎÄ£¬¿ÉÄܻᴥ·¢`POLLERR`ʼþ È»¶ø£¬ÐèҪעÒâµÄÊÇ£¬²¢²»ÊÇËùÓб¨ÎÄ´íÎ󶼻ᴥ·¢`POLLERR`£¬Ëü¸ü¶àµØÓëÉ豸»òµ×²ãÇý¶¯µÄ״̬Ïà¹Ø
2.ÎļþÃèÊö·û´íÎó£ºÈç¹û³¢ÊÔ¶ÔÒ»¸öÎÞЧ»òÒѹرյÄÎļþÃèÊö·û½øÐÐ`poll`²Ù×÷£¬¿ÉÄܻᴥ·¢`POLLERR`
3.É豸״̬Òì³££º¶ÔÓÚÍøÂçÉ豸£¬Èç¹ûÉ豸´¦ÓÚÒ쳣״̬£¨ÈçÍø¿¨±»½ûÓûòδÕýÈ·³õʼ»¯£©£¬Ò²¿ÉÄܻᴥ·¢`POLLERR`
4.¹ÜµÀ¹Ø±Õ£º¶ÔÓڹܵÀ»òFIFO£¬Èç¹ûд¶ËÒѾ¹Ø±Õ£¬¶ø¶Á¶ËÈÔÔÚ½øÐÐ`poll`²Ù×÷£¬Ò²¿ÉÄÜ´¥·¢`POLLERR`
ÔÚʵ¼ÊÓ¦ÓÃÖУ¬´¦Àí`POLLERR`ʼþʱ£¬ÐèÒª×Ðϸ·ÖÎö´¥·¢ÔÒò£¬²¢²ÉÈ¡ÏàÓ¦µÄ´ëÊ© ÀýÈ磬¶ÔÓÚÍøÂçÉ豸£¬¿ÉÒÔ¼ì²éÉ豸µÄ״̬£¬È·±£É豸ÒÑÕýÈ·³õʼ»¯²¢´¦Óڻ״̬£»¶ÔÓÚÎļþÃèÊö·û£¬¿ÉÒÔ¼ì²éÆäÓÐЧÐÔ£¬È·±£Ã»ÓÐʹÓÃÒѹرջòÎÞЧµÄÎļþÃèÊö·û½øÐÐ`poll`²Ù×÷
Èý¡¢`POLLERR`ʼþ´¦ÀíʾÀý
ÒÔÏÂÊÇÒ»¸öʹÓÃ`poll`º¯Êý¼àÊÓÍøÂçÌ×½Ó×Ö£¬²¢´¦Àí`POLLERR`ʼþµÄ¼òµ¥Ê¾Àý£º
include