linux selectº¯ÊýÓ÷¨
ת×Ô£ºhttp://www.91linux.com/html/article/kernel/20090102/15232.html
selectϵͳµ÷ÓÃÊÇÓÃÀ´ÈÃÎÒÃǵijÌÐò¼àÊÓ¶à¸öÎļþ¾ä±úµÄ״̬±ä»¯µÄ¡£³ÌÐò»áÍ£ÔÚselectÕâÀïµÈ´ý£¬Ö±µ½±»¼àÊÓµÄÎļþ¾ä±úÓÐÒ»¸ö»ò¶à¸ö·¢ÉúÁË״̬¸Ä±ä¡£¹ØÓÚÎļþ¾ä±ú£¬Æäʵ¾ÍÊÇÒ»¸öÕûÊý£¬ÎÒÃÇ×îÊìϤµÄ¾ä±úÊÇ0¡¢1¡¢2Èý¸ö£¬0ÊDZê×¼ÊäÈ룬1ÊDZê×¼Êä³ö£¬2ÊDZê×¼´íÎóÊä³ö¡£0¡¢1¡¢2ÊÇÕûÊý±íʾµÄ£¬¶ÔÓ¦µÄFILE *½á¹¹µÄ±íʾ¾ÍÊÇstdin¡¢stdout¡¢stderr¡£
int select(int n,fd_set * readfds,fd_set * writefds,fd_set * exceptfds,struct timeval * timeout);²ÎÊýn´ú±íÎļþÃèÊö´Ê¼Ó1£»²ÎÊýreadfds¡¢writefds ºÍexceptfds ³ÆÎªÃèÊö´Ê×飬ÊÇÓÃÀ´»Ø´«¸ÃÃèÊö´ÊµÄ¶Á£¬Ð´»òÀýÍâµÄ×´¿ö¡£ÏÂÃæµÄºêÌṩÁË´¦ÀíÕâÈýÖÖÃèÊö´Ê×éµÄ·½Ê½:
FD_CLR(inr fd,fd_set* set)£»ÓÃÀ´Çå³ýÃèÊö´Ê×ésetÖÐÏà¹Øfd µÄλ
FD_ISSET(int fd,fd_set *set)£»ÓÃÀ´²âÊÔÃèÊö´Ê×ésetÖÐÏà¹Øfd µÄλÊÇ·ñÎªÕæ
FD_SET£¨int fd,fd_set*set£©£»ÓÃÀ´ÉèÖÃÃèÊö´Ê×ésetÖÐÏà¹ØfdµÄλ
FD_ZERO£¨fd_set *set£©£»ÓÃÀ´Çå³ýÃèÊö´Ê×ésetµÄÈ«²¿Î»
²ÎÊýtimeoutΪ½á¹¹timeval£¬ÓÃÀ´ÉèÖÃselect()µÄµÈ´ýʱ¼ä£¬Æä½á¹¹¶¨ÒåÈçÏ£º
struct timeval
{
time_t tv_sec;
time_t tv_usec;
};
Èç¹û²ÎÊýtimeoutÉèΪNULL£¬Ôò±íʾselect£¨£©Ã»ÓÐtimeout¡£
selectº¯ÊýÖ´Ðнá¹û£ºÖ´Ðгɹ¦Ôò·µ»ØÎļþÃèÊö´Ê״̬ÒѸıäµÄ¸öÊý£¬Èç¹û·µ»Ø0´ú±íÔÚÃèÊö´Ê״̬¸Ä±äǰÒѳ¬¹ýtimeoutʱ¼ä£¬Ã»Óзµ»Ø£»µ±ÓдíÎó·¢ÉúʱÔò·µ»Ø-1£¬´íÎóÔÒò´æÓÚerrno£¬´Ëʱ²ÎÊýreadfds£¬writefds£¬exceptfdsºÍtimeoutµÄÖµ±ä³É²»¿ÉÔ¤²â¡£´íÎó
Öµ¿ÉÄÜΪ£º
EBADF ÎļþÃèÊö´ÊΪÎÞЧµÄ»ò¸ÃÎļþÒѹرÕ
EINTR ´Ëµ÷Óñ»ÐźÅËùÖжÏ
EINVAL ²ÎÊýn Ϊ¸ºÖµ¡£
ENOMEM ºËÐÄÄÚ´æ²»×ã
³£¼ûµÄ³ÌÐòƬ¶ÎÈçÏ£º
fs_set readset£»
FD_ZERO(&readset);
FD_SET(fd,&readset);
select(fd+1,&readset,NULL,NULL,NULL);
if(FD_ISSET(fd,readset){……}
¼ì²â¼üÅÌÓÐÎÞÊäÈ룬ÍêÕûµÄ³ÌÐòÈçÏ£º
#include<sys/time.h>
#include<sys/types.h>
#include<unistd.h>
#include<string.h>
#include<std
Ïà¹ØÎĵµ£º
LinuxϵÄÉ豸Çý¶¯³ÌÐò±»×é֯Ϊһ×éÍê³É²»Í¬ÈÎÎñµÄº¯ÊýµÄ¼¯ºÏ£¬Í¨¹ýÕâЩº¯ÊýʹµÃWindowsµÄÉ豸²Ù×÷ÓÌÈçÎļþÒ»°ã¡£ÔÚÓ¦ÓóÌÐò¿´À´£¬Ó²¼þÉ豸ֻÊÇÒ»¸öÉ豸Îļþ£¬Ó¦ÓóÌÐò¿ÉÒÔÏó²Ù×÷ÆÕͨÎļþÒ»Ñù¶ÔÓ²¼þÉ豸½øÐвÙ×÷£¬Èçopen ()¡¢close ()¡¢read ()¡¢write () µÈ¡£
LinuxÖ÷Òª½«É豸·ÖΪ¶þÀࣺ×Ö·ûÉ豸ºÍ¿éÉ豸¡£×Ö·ûÉ豸ÊÇÖ¸Éè ......
linuxÖÐÓÃshell»ñÈ¡×òÌì¡¢Ã÷Ìì»ò¶àÌìǰµÄÈÕÆÚ:
ÔÚLinuxÖжÔman date -d ²ÎÊý˵µÄ±È½ÏÄ£ºý,ÒÔϾÙÀý½øÒ»²½ËµÃ÷:
# -d, --date=STRING display time described by STRING, not `now’
[root@Gman root]# date -d next-day +%Y%m%d #Ã÷ÌìÈÕÆÚ
20091024
[root@Gman root]# date -d last-day +%Y%m%d #×òÌìÈÕÆÚ
20091 ......
1. ÖØÒªÄ¿Â¼
µ±ÎÒÃǽøÈëLinuxϵͳºó£¬ÏñÔÚWindowsÃüÁîÌáʾ·ûÏÂÔËÐгÌÐòÄÇÑù£¬ÎÒÃÇÓëShell³ÌÐò(ͨ³£Îªbash)½»»¥£¬shell³ÌÐòÔÚÖ¸¶¨µÄĿ¼¼¯ÏÂѰÕÒÎÒÃÇÆÚÍûµÄ³ÌÐòÎļþ¡£ÕâЩĿ¼ͨ³£´æ·ÅÔÚShell±äÁ¿PATHÖУ¬ÕâÓëwindowsϵͳÊÇÒ»ÑùµÄ¡£ËÑË÷·¾¶PATHÓÉϵͳ¹ÜÀíÔ±ÅäÖã¬Í¨³£»á°üº¬Ò»Ð©ÏµÍ³³ÌÐòµÄ±ê×¼´æ·ÅĿ¼ ......
Ubuntu LinuxÓÐÒ»¸öÓëÖÚ²»Í¬µÄÌØµã£¬ÄǾÍÊdzõ´ÎʹÓÃʱ£¬ÄãÎÞ·¨×÷ΪrootÀ´µÇ¼ϵͳ£¬ÎªÊ²Ã´»áÕâÑù£¿Õâ¾ÍÒª´ÓϵͳµÄ°²×°ËµÆð¡£¶ÔÓÚÆäËûLinuxϵͳÀ´Ëµ£¬Ò»°ãÔÚ°²×°¹ý³Ì¾ÍÉ趨rootÃÜÂ룬ÕâÑùÓû§¾ÍÄÜÓÃËüµÇ¼rootÕÊ»§»òʹÓÃsuÃüÁîת»»µ½³¬¼¶Óû§Éí·Ý¡£ÓëÖ®Ïà·´£¬UbuntuĬÈϰ²×°Ê±£¬²¢Ã»ÓиørootÓû§ÉèÖÿÚÁҲûÓÐÆôÓÃrootÕÊ» ......