linux—selectÏê½â
linux—selectÏê½â
selectϵͳµ÷ÓÃʱÓÃÀ´ÈÃÎÒÃǵijÌÐò¼àÊÓ¶à¸öÎļþ¾ä±úµÄ״̬±ä»¯µÄ¡£³ÌÐò»áÍ£ÔÚselectÕâÀïµÈ´ý£¬Ö±µ½±»¼àÊÓµÄÎļþ¾ä±úÓÐÒ»¸ö»ò¶à¸ö·¢ÉúÁË״̬¸Ä±ä¡£
¹ØÓÚÎļþ¾ä±ú£¬Æäʵ¾ÍÊÇÒ»¸öÕûÊý£¬Í¨¹ýsocketº¯ÊýµÄÉùÃ÷¾ÍÃ÷°×ÁË£º
int socket(int domain, int type, int protocol);
ÎÒÃÇ×îÊìϤµÄ¾ä±úÊÇ0¡¢1¡¢2Èý¸ö£¬0ÊDZê×¼ÊäÈ룬1ÊDZê×¼Êä³ö£¬2ÊDZê×¼´íÎóÊä³ö¡£0¡¢1¡¢2ÊÇÕûÊý±íʾµÄ£¬¶ÔÓ¦µÄFILE *½á¹¹µÄ±íʾ¾ÍÊÇstdin¡¢stdout¡¢stderr¡£
¼ÌÐøÉÏÃæµÄselect£¬¾ÍÊÇÓÃÀ´¼àÊÓij¸ö»òijЩ¾ä±úµÄ״̬±ä»¯µÄ¡£selectº¯ÊýÔÐÍÈçÏ£º
int select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
º¯ÊýµÄ×îºóÒ»¸ö²ÎÊýtimeoutÊÇÒ»¸ö³¬Ê±Ê±¼äÖµ¡£ÆäÀàÐÍÊÇstruct timeval *£¬¼´Ò»¸östruct timeval½á¹¹µÄ±äÁ¿µÄÖ¸Õ룬ËùÒÔÎÒÃÇÔÚ³ÌÐòÀïÒªÉùÃ÷Ò»¸östruct timeval tv;È»ºó°Ñ±äÁ¿tvµÄµØÖ·&tv´«µÝ¸øselectº¯Êý¡£struct timeval½á¹¹ÈçÏ£º
struct timeval
{
long tv_sec; //seconds
long tv_usec; //microseconds
}£»
µÚ2¡¢3¡¢4Èý¸ö²ÎÊýÊÇÒ»ÑùµÄÀàÐÍ;fd_set *,¼´ÎÒÃÇÔÚ³ÌÐòÀïÒªÉêÇ뼸¸öfd_setÀàÐ͵ıäÁ¿£¬±ÈÈçrdfds£¬wtfds£¬exfds£¬È»ºó°ÑÕâ¸ö±äÁ¿µÄµØÖ·&rdfds,&wtfds,&exfds´«µÝ¸øselectº¯Êý¡£ÕâÈý¸ö²ÎÊý¶¼ÊÇÒ»¸ö¾ä±úµÄ¼¯ºÏ£¬µÚÒ»¸ördfdsÊÇÓÃÀ´±£´æÕâÑùµÄ¾ä±úµÄ:µ±¾ä±úµÄ״̬±ä³É¿É¶Áʱϵͳ¾Í¸æËßselectº¯Êý·µ»Ø£¬Í¬ÀíµÚ¶þ¸öº¯ÊýÊÇÖ¸ÏòÓоä±ú״̬±ä³É¿Éдʱϵͳ¾Í»á¸æËßselectº¯Êý·µ»Ø£¬Í¬ÀíµÚÈý¸ö²ÎÊýexfdsÊÇÌØÊâÇé¿ö£¬¼´¾ä±úÉÏÓÐÌØÊâÇé¿ö·¢Éúʱϵͳ»á¸æËßselectº¯Êý·µ»Ø¡£ÌØÊâÇé¿ö±ÈÈç¶Ô·½Í¨¹ýÒ»¸ösocket¾ä±ú·¢À´Á˽ô¼±Êý¾Ý¡£Èç¹ûÎÒÃdzÌÐòÀïÖ»Ïë¼ì²âij¸ösocketÊÇ·ñÓÐÊý¾Ý¿É¶Á£¬ÎÒÃÇ¿ÉÒÔÕâÑù£º
fd_set rdfds;
struct timeval tv;
int ret;
FD_ZERO(&rdfds);
FD_SET(socket, &rdfds);
tv.tv_sec = 1;
tv.tv_uses = 500;
ret = select (socket + 1, %rdfds, NULL, NULL, &tv);
if(ret < 0) perror (“select”);
else if (ret = = 0) printf(“time out”);
else {
printf(“ret = %d\n”,ret);
if(FD_ISSET(socket, &rdfds)){
 
Ïà¹ØÎĵµ£º
µ±Ö´ÐÐ
ls -l
»ò
ls -al
ÃüÁîºóÏÔʾµÄ½á¹ûÖУ¬×îÇ°ÃæµÄµÚ
2
¡«
10
¸ö×Ö·ûÊÇÓÃÀ´±íʾȨÏÞ¡£µÚÒ»¸ö×Ö·ûÒ»°ãÓÃÀ´Çø·ÖÎļþºÍĿ¼£º
d
£º±íʾÊÇÒ»¸öĿ¼£¬ÊÂʵÉÏÔÚ
ext2fs
ÖУ¬Ä¿Â¼ÊÇÒ»¸öÌØÊâµÄÎļþ¡£
££º±íʾÕâÊÇÒ»¸öÆÕͨµÄÎļþ¡£
l:
±íʾ ......
Linux version
[1] 2.6.10
2.6 version number, 10 release number
[2] 2.6.10 and 2.6.11
They can differ significantly even in core components and in fundamental algorithms
[3] 2.6.11.12
when a new kernel release appears, it is potentially unstable and buggy. To address this problem, the kern ......
viµÄʹÓÃÖ®»ã×Ü
¹¦ÄÜ×îÇ¿ÔÚµÄ±à¼Æ÷——vi
viÊÇËùÓÐUNIXϵͳ¶¼»áÌṩµÄÆÁÄ»±à¼Æ÷£¬ËüÌṩÁËÒ»¸öÊÓ´°É豸£¬Í¨¹ýËü¿ÉÒÔ±à¼Îļþ¡£µ±È»£¬¶ÔUNIXϵͳÂÔÓÐËùÖªµÄÈË£¬»ò¶à»òÉÙ¶¼¾õµÃvi³¬¼¶ÄÑÓ㬵«viÊÇ×î»ù±¾µÄ±à¼Æ÷£¬ËùÒÔÏ£Íû¶ÁÕßÄܺúðÑËüѧÆðÀ´£¬ÒÔºóÔÚUNIXÊÀ½çÀï±Ø½«³©ÐÐÎÞ×è¡¢ÓÎÈÐÓÐÓ࣬ÒòΪÆäËû¼¸Ö ......
9ÔÂ13ÈÕ
ʹÓÃXDMCPÀ´Ô¶³ÌÁ¬½ÓÄãµÄLinuxͼÐÎ×ÀÃæ£¡
²Ù×÷»·¾³
Fedora Core 3
gdm(Gnome)
X-Win32 v8.0 ( http://www.starnet.com/evalkey/ )
É趨 XDMCP
XDM ÊÇ X Display Manager µÄ¼ò³Æ£¬ËûµÄ¹¦ÄÜÊÇÊ²Ã´ÄØ£¿ ¼òµ¥µÄ˵£¬¾ÍÊǹÜÀí²Ù¿Ø X Server µÄÏÔʾÀ²¡«ËûÖ÷ÒªÓÐÁ½ÖÖ¹ÜÀí·½Ê½£¬ Èç¹û X Server/Client Ô ......
Memcache»º´æÊǸöºÃÈí¼þ£¬ÕâÀï½²ÏÂÔÚLinuxϰ²×°µÄ·½·¨£º
·þÎñÆ÷¶ËÖ÷ÒªÊǰ²×°memcache·þÎñÆ÷¶Ë£¬Ä¿Ç°µÄ×îа汾ÊÇ memcached-1.3.0 ¡£
ÏÂÔØ£ºhttp://www.danga.com/memcached/dist/memcached-1.2.2.tar.gz
ÁíÍ⣬MemcacheÓõ½ÁËlibeventÕâ¸ö¿âÓÃÓÚSocketµÄ´¦Àí£¬ËùÒÔ»¹ÐèÒª°²×°libevent£¬libeventµÄ×îа汾ÊÇlibevent ......