Linux select
selectº¯ÊýÊÇÓÃÓÚ³ÌÐò¼àÊÓ¶à¸öÎļþÃèÊö·û(file descrīptor)µÄ״̬±ä»¯¡£³ÌÐò»áÍ£ÔÚselectÕâÀïµÈ´ý£¬Ö±µ½±»¼àÊÓµÄÎļþÃèÊö·ûÓÐijһ¸ö»ò¶à¸ö·¢ÉúÁË״̬¸Ä±ä¡£select()µÄ»úÖÆÖÐÌṩһfd_setµÄÊý¾Ý½á¹¹£¬Êµ¼ÊÉÏÊÇÒ»longÀàÐ͵ÄÊý×飬 ÿһ¸öÊý×éÔªËØ¶¼ÄÜÓëÒ»´ò¿ªµÄÎļþÃèÊö·û£¨²»¹ÜÊÇSocketÃèÊö·û,»¹ÊÇÆäËû Îļþ»òÃüÃû¹ÜµÀ»òÉ豸ÃèÊö·û£©½¨Á¢ÁªÏµ£¬½¨Á¢ÁªÏµµÄ¹¤×÷ÓɳÌÐòÔ±Íê³É£¬ µ±µ÷ÓÃselect()ʱ£¬ÓÉÄں˸ù¾ÝIO״̬ÐÞ¸Äfd_setµÄÄÚÈÝ£¬ÓÉ´ËÀ´Í¨ÖªÖ´ ÐÐÁËselect()µÄ½ø³ÌÄÄÒ»Socket»òÎļþ¿É¶Á.
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º¯Êý£¬Èç¹û×îºóÒ»¸ö³¬Ê±µÄʱ¼äÖµÉèÖÃΪNULL±íʾÎÞ³¬Ê±Ê±¼ä¡£struct timeval½á¹¹ÈçÏ£º
struct timeval
{
long tv_sec; /* seconds */
long tv_usec; /* microseconds */
};
µÚ2¡¢3¡¢4Èý¸ö²ÎÊýµÄÀàÐÍÊÇÒ»ÑùµÄ£º fd_set *£¬¼´ÎÒÃÇÔÚ³ÌÐòÀïÒªÉêÃ÷¼¸¸öfd_setÀàÐ͵ıäÁ¿£¬±ÈÈ綨ÒåÁËrfds, wfds, efds¡£
ÁíÍâ¹ØÓÚfd_setÀàÐ͵ıäÁ¿£¬»¹ÓÐÒ»×é±ê×¼µÄºê¶¨ÒåÀ´´¦Àí´ËÀà±äÁ¿£º
FD_ZERO(fd_set *fdset)£ºÇå¿ÕfdsetÓëËùÓÐÎļþÃèÊö·ûµÄÁªÏµ¡£
FD_SET(int fd, fd_set *fdset)£º½¨Á¢ÎļþÃèÊö·ûfdÓëfdsetµÄÁªÏµ¡£
FD_CLR(int fd, fd_set *fdset)£ºÇå³ýÎļþÃèÊö·ûfdÓëfdsetµÄÁªÏµ¡£
FD_ISSET(int fd, fd_set *fdset)£º¼ì²éfd_setÁªÏµµÄÎļþÃèÊö·ûfdÊÇ·ñ¿É¶Áд£¬>0±íʾ¿É¶Áд¡£
£¨¹ØÓÚfd_set¼°Ïà¹ØºêµÄ¶¨Òå¼û/usr/include/sys/types.h£©¶¨ÒåµÄÕâÈý¸ö²ÎÊý¶¼ÊÇÃèÊö·ûµÄ¼¯ºÏ£¬µÚÒ»¸örfdsÊÇÓÃÀ´±£´æÕâÑùµÄÃèÊö·ûµÄ£ºµ±ÃèÊö·ûµÄ״̬±ä³É¿É¶ÁµÄʱϵͳ¾Í»á¸æËßselectº¯Êý·µ»Ø£¬µÚ¶þ¸öwfdsÊÇÖ¸ÓÐÃèÊö·û״̬±ä³É¿ÉдµÄʱϵͳ¾Í»á¸æËßselectº¯Êý·µ»Ø£¬µÚÈý¸ö²ÎÊýefdsÊÇÌØÊâÇé¿ö£¬¼´ÃèÊö·ûÉÏÓÐÌØÊâÇé¿ö·¢Éúʱϵͳ»á¸æËßselectº¯Êý·µ»Ø¡£ÏÂÃæÒÔÒ»¸öÊäÈëΪÀýÀ´ËµÃ÷£º
......other codes
int fd1, fd2; /* ÔÚ¶¨ÒåÁ½¸öÃèÊö·û*/
fd1 = socket(...); /* ´´½¨socketÁ¬½Ó*/
fd2
Ïà¹ØÎĵµ£º
Ò».linuxµÄÌØµã
1£©Ãâ·ÑµÄ/¿ªÔ´µÄ
2£©Ö§³Ö¶àÏß³Ì/¶àÓû§
3£©°²È«ÐÔºÃ
4£©¶ÔÄÚ´æºÍÎļþ¹ÜÀíÓÅÔ½
¶þ.ËÔÚͦlinux
IBM/Compaq/Novell/Oracle/Sun/NEC....
Èý.linux ×îСֻҪ4MÄÚ´æ -¡·Ç¶Èëʽ¿ª·¢
ËÄ.linux µÄ¹ÊÊÂ
1973£¬unix³öÏÖ¡£´ËʱwindowsÉÐδ³öÉú
Ô´ÂëÄں˹²Ïí -¡·IBMÍÆ³öaix£¬SUNÍÆ³ösolaris£¬HPÍÆ³öHP unix£¬ ......
Linux shell½Å±¾È«ÃæÑ§Ï°
1. Linux ½Å±¾±àд»ù´¡
1.1 Óï·¨»ù±¾½éÉÜ
1.1.1 ¿ªÍ·
³ÌÐò±ØÐëÒÔÏÂÃæµÄÐпªÊ¼£¨±ØÐë·½ÔÚÎļþµÄµÚÒ»ÐУ©£º
#!/bin/sh
¡¡¡¡·ûºÅ#!ÓÃÀ´¸æËßϵͳËüºóÃæµÄ²ÎÊýÊÇÓÃÀ´Ö´ÐиÃÎļþµÄ³ÌÐò¡£ÔÚÕâ¸öÀý×ÓÖÐÎÒÃÇʹÓÃ/bin/shÀ´Ö´ÐгÌÐò¡£
¡¡¡¡µ±±à¼ºÃ½Å±¾Ê±£¬Èç¹ûÒªÖ´Ðиýű¾£¬»¹±ØÐ ......
´ÅÅ̵ÄIOÐÔÄÜÊǺâÁ¿¼ÆËã»ú×ÜÌåÐÔÄܵÄÒ»¸öÖØÒªÖ¸±ê¡£LinuxÌṩÁËiostatÃüÁîÀ´»ñÈ´´ÅÅÌÊäÈ룯Êä³ö£¨¼´IO£©Í³¼ÆÐÅÏ¢£¬WindowsÔòÌṩÁËWMI½Ó¿Ú£¬¿ÉÒÔͨ¹ý±àдһ¸ö¼òµ¥µÄ½Å±¾À´»ñÈ¡ÓëiostatÏ൱µÄ¹¦ÄÜ¡£
1¡¢LinuxϵÄiostatÃüÁî
iostat -d -k -t 2
ÿ¸ô2Ãëͳ¼ÆÒ»´Î´ÅÅÌIOÐÅÏ¢£¬Ö±µ½°´Ctrl+CÖÕÖ¹³ÌÐò£¬-d Ñ¡Ïî±íʾͳ¼Æ´ÅÅÌÐÅÏ¢ ......
LinuxµÄÆô¶¯Á÷³Ì(/etc/inittab)
¡¡¡¡1. ´ÓBIOSµ½KERNEL
¡¡¡¡BIOS×Ô¼ì£>MBR(GRUB)£>KERNEL£>KERNEL×Ô½âѹ£>Äں˳õʼ»¯£>ÄÚºËÆô¶¯
¡¡¡¡BIOS×Ô¼ì
¡¡¡¡µ±µçÄÔ¿ª»úµÄʱºò£¬µçÄÔ»á½øÈëBIOS£¬BIOSµÄ¹¤×÷Ö÷ÒªÊÇÕì²âµçÄÔµÄÖܱßÅäÌ×É豸ÊÇ·ñ¹¤×÷Õý³££¬ÈçCPUµÄÀàÐÍ¡¢ËÙ¶È¡¢»º´æµÈ
¡¡¡¡Ö÷°åÀàÐÍ
¡¡¡¡ÄÚ´æµÄËÙ ......
µÚ¾Å²¿·Ö£º³ýÒÔÏÂÑ¡ÏÆäËüÈ«²¿É¾³ý
¡¡¡¡Networking
¡¡¡¡Networking options --->
¡¡¡¡[]Unix domain sockets
¡¡¡¡[]TCP/IP networking
µÚÊ®²¿·Ö£º³ýÒÔÏÂÑ¡ÏÆäËüÈ«²¿É¾³ý
¡¡¡¡Device Drivers --->É豸Çý¶¯
¡¡¡¡Block devices-------¡µ
¡¡¡¡[]Compaq SMART2 support
¡¡¡¡[] Compaq Smart Array 5xxx supp ......