LinuxÖÐselectº¯Êýѧϰ¼°ÊµÀý±Ê¼Ç
UnixÖеĺ¯ÊýselectºÍpollÓÃÀ´£¬Ö§³ÖUnixÖÐI/O¸´ÓõŦÄÜ£¬ÔÚUnixÖÐI/OÄ£ÐÍ¿ÉÒÔ·ÖΪÒÔÒ»¼¸ÖÖ£º
£¨1£©×èÈûI/O
£¨2£©·Ç×èÈûI/O
£¨3£©I/O¸´Óã¨selectºÍpoll£©
£¨4£©ÐźÅÇý¶¯I/O(SIGIO)
£¨5£©Òì²½I/O
ÆäÖУ¬ÏÖÔڱȽÏÁ÷ÐеÄI/OÄ£ÐÍÊÇ×èÈûI/OÄ£ÐÍ.×èÈûI/OÊǵ±Ó¦ÓóÌÐòºÍÄں˽»»»Êý¾Ýʱ£¬ÓÉÓÚÄں˻¹Ã»ÓÐ×¼±¸ºÃÊý¾Ý£¬ÄÇôӦÓóÌÐò±ØÐë½øÐÐ×èÈû£¬²»ÄܼÌÐøÖ´ÐУ¬Ö±µ½Äں˵ÄÊý¾Ý×¼±¸ºÃ£¡Ó¦ÓóÌÐòÈ¡µ½Êý¾Ý·µ»Øºó£¬×èÈû¹ý³Ì½áÊø£¡µ«·µ»ØµÄ½á¹ûÒ²²¢²»Ò»¶¨ÊÇÕýÈ·µÄ£¡ÕâÀïÖ»ÊǾÙÒ»¸ö¼òµ¥µÄÀý×Ó£¡Ò²ÐíÇé¿ö»á¸ü¼ÓµÄ¸´ÔÓ£¡
·Ç×èÈûI/O£¬ÀýÈçÔÚºÍÄں˽»»»Êý¾Ýʱ£¬Èç¹ûÄں˵ÄÊý¾ÝûÓÐ×¼±¸ºÃ£¬ÄÇôӦÓóÌÐò²»»áÒ»ÕæµÈ´ý£¬»áÓÐÒ»¸ö·µ»ØÐÅÏ¢£¬ÒÔÅжÏÊÇÄÇÀï³öÁËÎÊÌ⣡ÕâÑùÓÐÖúÓÚÈ·ÈÏÊÇÔÚÄǸö½×¶Î³öÁËÎÊÌ⣡
I/O¸´Óã¬ÎÒÃǾͿÉÒÔµ÷ÓÃϵͳµ÷ÓÃselectºÍpoll£¡ÔÚÕâÁ½¸öϵͳµ÷ÓÃÖеÄijһ¸ö×èÈû£¬¶ø²»ÊÇÕæÕýµÄ×èÈûI/Oϵͳµ÷Óã¡
ÏÂÃæÖ÷Òª½éÉÜI/O¸´ÓÃÖеÄselectº¯Êý£¡selectº¯Êý¿ÉÒÔָʾÄں˵ȴý¶à¸öʼþÖеÄÈÎÒ»¸ö·¢Éú£¬½öÔÚÒ»¸ö»ò¶à¸öʼþ·¢Éú£¬»òÕߵȴýÒ»¸ö×ã¹»µÄʱ¼äºó²Å»½Ðѽø³Ì£¡selectº¯ÊýµÄÔÐÍÈçÏ£º
#include <sys/types.h>
#include<sys/time.h>
int select (int maxfdp1,fd_set *readset,fd_set * writeset,fd_set excpetset,const struct timeval *timeout);
·µ»ØÖµ£º×¼±¸ºÃµÄÃèÊö·ûµÄÕýÊýÄ¿ 0---³¬Ê± -1---³ö´í£¡
ÆäÖÐ×îºóÒ»¸ö²ÎÊýÊÇÒ»¸ö½á¹¹ÌåµÄÖ¸Õ룬Ëü±íʾµÈ´ýÄÚºËÖеÄÒ»×éÃèÊö·ûÈÎÒ»¸ö×¼±¸ºÃÐèÒª»¨·Ñ¶à¾ÃµÄʱ¼ä£¡ÆäÖÐtimevalÖ¸¶¨ÁËÃëÊýºÍ΢ÃëÊý¡£
struct timeval{
long tv_sec;//ÃëÊý
long tv_usec;//΢ÃëÊý
};
½« timeoutÉèÖÃΪ¿ÕÖ¸Õëʱ£¬»áÓÀÔ¶µÈ´ýÏÂÈ¥£¬µÈ´ý¹Ì¶¨µÄʱ¼ä£ºÈç¹ûtimeoutÖ¸ÏòµÄtimevalÖеľßÌåµÄֵʱ£¬»áµÈ´ýÒ»¸ö¹Ì¶¨µÄʱ¼ä£¬²»µÈ´ýÁ¢¿Ì·µ»Ø£¬ÕâʱtimevalÖеÄtv_secºÍtv_usecΪ0.
selectÓÐÈý¸ö¿ÉÄܵķµ»ØÖµ¡£
1£®Õý³£Çé¿öÏ·µ»Ø¾ÍÐ÷µÄÎļþÃèÊö·û¸öÊý£»
2£®¾¹ýÁËtimeoutʱ³¤ºóÈÔÎÞÉ豸׼±¸ºÃ£¬·µ»ØÖµÎª0£»
3£®Èç¹ûselect±»Ä³¸öÐźÅÖжϣ¬Ëü½«·µ»Ø-1²¢ÉèÖÃerrnoΪEINTR¡£
4£®Èç¹û³ö´í£¬·µ»Ø-1²¢ÉèÖÃÏàÓ¦µÄerrno¡£
EBADF ÎļþÃèÊö´ÊΪÎÞЧµÄ»ò¸ÃÎļþÒѹرÕ
EINTR ´Ëµ÷Óñ»ÐźÅË
Ïà¹ØÎĵµ£º
Ê×ÏÈ,·þÎñÆ÷GCCÒªÓÐ,²»È»Ê²Ã´¶¼²»ÄÜ×ö.Äܹ»ÓÃgcc -vÀ´²é¿´ÊÇ·ñ°²×°ÁËGCC,
#gcc -v
Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/3.2.3/specs
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info
--enable-shared --enable-threads=posix --disable-checki ......
×îÔç½Ó´¥LinuxÄÚºËÊÇÔÚ´óÈýµÄʱºò£¬ÄÇʱ¡¶²Ù×÷ϵͳ¡·µÄ¿Î³ÌÉè¼Æ¾ÍÊǽøÐÐLinuxÄÚºËÔ´´úÂëµÄ·ÖÎöÓë½ø³Ìµ÷¶ÈµÄ¸Ä½ø¡£ÌâÄ¿ÊÇ´óµÄÓеãÏÅÈË£¬ÌØ
±ðÊǶÔÄÇʱһ¸öÉæ×ãδÉîµÄÄêÇáÈË¿´À´¡£²»¹ýÄÇʱ×öµÄÊÂÇéºÜ¼òµ¥£¬ÈÏÈÏÕæÕæµÄ¿´ÁË¡¶LinuxÄÚºËÔ´´úÂëÇé¾°·ÖÎö¡·µÄǰÑÔ²¿·Ö£¨Ö÷Òª½²µÄAT&T»ã
±àÓïÑÔ£¬ÄÚºËÖÐÒ»Ð©ÌØÊâµÄ±à³Ì¹æÔò£©£¬Ó ......
½ñÌì¿´µ½Ê¦ÐÖ¹¤Î»ÉÏÓб¾Linux Kernel In a Nutshell£¬»¹ÊÇȫӢµÄÓ°Ó¡°æ£¬ËùÒԾͽè¹ýÀ´¿´¿´£¬·¢ÏÖÏÖÔÚ¿´Ó¢ÎĵÄÊé½¥½¥ÊÊÓ¦ÁË£¬»¹ÊDZȽÏÈÝÒ׵ģ¬ÊéÖпªÊ¼½éÉÜÈçºÎ±àÒëLinuxÄںˣ¬LinuxÄں˴óÈýµÄʱºòҲѧ¹ý±àÒë¹ý£¬µ«Êǵ±Ê±±àÒë±È½Ï¼òµ¥£¬Õâ´Î¾ö¶¨ÔÙÖØÍ·µ½Î²ºÃºÃ±àÒëһϣ¬Ê×ÏÈÏÂÔØlinux kernel£¬ÔÙÓÃsecureCRTÉÏ´«µ½Ubuntu 8. ......
ǶÈëʽϵͳÓëͨÓÃPC»ú²»Í¬£¬Ò»°ãûÓÐÓ²ÅÌÕâÑùµÄ´æ´¢É豸¶øÊÇʹÓÃFlashÉÁ´æÐ¾Æ¬¡¢Ð¡ÐÍÉÁ´æ¿¨µÈרΪǶÈëʽϵͳÉè¼ÆµÄ´æ´¢×°Ö㬱¾ÎÄ·ÖÎöÁËǶÈëʽϵͳÖг£ÓõĴ洢É豸¼°Æä¹ÜÀí»úÖÆ£¬½éÉÜÁ˳£ÓõĻùÓÚFLASHµÄÎļþϵͳÀàÐÍ¡£
1£®Ç¶Èëʽϵͳ´æ´¢É豸¼°Æä¹ÜÀí»úÖÆ·ÖÎö
¡¡¡¡¹¹½¨ÊÊÓÃÓÚǶÈëʽϵͳµÄLi ......
±¾ÎĽ«Í¨¹ýÓÃÓÚÏò¶ÓÁз¢ËÍÏûÏ¢ºÍ´Ó¶ÓÁнÓÊÕÏûÏ¢µÄʾÀýÓ¦ÓóÌÐò˵Ã÷ÈçºÎÔÚ Linux ÉÏ×ÅÊÖ°²×°ºÍÅäÖà WebSphere MQ£¬ÒÔ¼°ÈçºÎΪ MQ »·¾³¿ª·¢ Java Ó¦ÓóÌÐò¡£
ÒýÑÔ
±¾ÎĵÄÄ¿±êÊÇÈÃÄúÇáËÉʵÏÖ Linux® É쵀 IBM® WebSphere® MQ ÈëÃÅ¡£ÓÉÓÚ´ó²¿·Ö Linux ·þÎñÆ÷²¢Ã»ÓÐͼÐÎÓû§½çÃæ£¬Òò´Ë±¾ÎĽ«ËµÃ÷ÈçºÎʹÓÃÃüÁîÐй¤¾ ......