LinuxÏÂselectºÍpollµÄÓ÷¨
select()º¯ÊýµÄ×÷ÓÃ
ϵͳµ÷ÓÃselectºÍpollµÄºó¶ËʵÏÖ£¬ÓÃÕâÁ½¸öϵͳµ÷ÓÃÀ´²éѯÉ豸ÊÇ·ñ¿É¶Áд£¬»òÊÇ·ñ´¦ÓÚijÖÖ״̬¡£Èç¹ûpollΪ¿Õ£¬ÔòÇý¶¯É豸»á±»ÈÏΪ¼´¿É¶ÁÓÖ¿Éд£¬·µ»ØÖµÊÇÒ»¸ö״̬ÑÚÂë
ÈçºÎʹÓÃselect()º¯Êý?
select()º¯ÊýµÄ½Ó¿ÚÖ÷ÒªÊǽ¨Á¢ÔÚÒ»ÖÖ½Ð'fd_set'ÀàÐ͵Ļù´¡ÉÏ¡£Ëü('fd_set') ÊÇÒ»×éÎļþÃèÊö·û(fd)µÄ¼¯ºÏ¡£ÓÉÓÚfd_setÀàÐ͵ij¤¶ÈÔÚ²»Í¬Æ½Ì¨Éϲ»Í¬£¬Òò´ËÓ¦¸ÃÓÃÒ»×é±ê×¼µÄºê¶¨ÒåÀ´´¦Àí´ËÀà±äÁ¿£º
fd_set set;
FD_ZERO(&set);
FD_SET(fd, &set);
FD_CLR(fd, &set);
FD_ISSET(fd, &set);
ÔÚ¹ýÈ¥£¬Ò»¸öfd_setͨ³£Ö»Äܰüº¬ÉÙÓÚµÈÓÚ32¸öÎļþÃèÊö·û£¬ÒòΪfd_setÆäʵֻÓÃÁËÒ»¸öintµÄ±ÈÌØÊ¸Á¿À´ÊµÏÖ£¬ÔÚ´ó¶àÊýÇé¿öÏ£¬¼ì²é fd_setÄܰüÀ¨ÈÎÒâÖµµÄÎļþÃèÊö·ûÊÇϵͳµÄÔðÈΣ¬µ«È·¶¨ÄãµÄfd_setµ½µ×ÄܷŶàÉÙÓÐʱÄãÓ¦¸Ã¼ì²é/Ð޸ĺêFD_SETSIZEµÄÖµ¡£*Õâ¸öÖµÊÇϵͳÏà¹ØµÄ*£¬Í¬Ê±¼ì²éÄãµÄϵͳÖеÄselect() µÄmanÊֲᡣÓÐһЩϵͳ¶Ô¶àÓÚ1024¸öÎļþÃèÊö·ûµÄÖ§³ÖÓÐÎÊÌâ¡£[ÒëÕß×¢£º Linux¾ÍÊÇÕâÑùµÄϵͳ£¡Äã»á·¢ÏÖsizeof(fd_set)µÄ½á¹ûÊÇ128(*8 = FD_SETSIZE=1024)¡¡¾¡¹ÜºÜÉÙÄã»áÓöµ½ÕâÖÖÇé¿ö¡£]
selectµÄ»ù±¾½Ó¿ÚÊ®·Ö¼òµ¥£º
int select(int nfds, fd_set *readset, fd_set *writeset,
fd_set *exceptset, struct timeval *timeout);
ÆäÖУº
nfds
ÐèÒª¼ì²éµÄÎļþÃèÊö·û¸öÊý£¬ÊýÖµÓ¦¸Ã±ÈÊÇÈý×éfd_setÖÐ×î´óÊý
¸ü´ó£¬¶ø²»ÊÇʵ¼ÊÎļþÃèÊö·ûµÄ×ÜÊý¡£
readset
ÓÃÀ´¼ì²é¿É¶ÁÐÔµÄÒ»×éÎļþÃèÊö·û¡£
writeset
ÓÃÀ´¼ì²é¿ÉдÐÔµÄÒ»×éÎļþÃèÊö·û¡£
exceptset
ÓÃÀ´¼ì²éÒâÍâ״̬µÄÎļþÃèÊö·û¡£(×¢£º´íÎó²¢²»ÊÇÒâÍâ״̬)
timeout
NULLÖ¸Õë´ú±íÎÞÏ޵ȴý£¬·ñÔòÊÇÖ¸Ïòtimeval½á¹¹µÄÖ¸Õ룬´ú±í×î
³¤µÈ´ýʱ¼ä¡£(Èç¹ûÆäÖÐtv_sec
Ïà¹ØÎĵµ£º
×ÜÀÀ
ÓÃiptables -ADC À´Ö¸¶¨Á´µÄ¹æ
Ôò
£¬-AÌí¼Ó -Dɾ³ý -C ÐÞ¸Ä
iptables - [RI] chain rule num rule-specification[option]
ÓÃiptables - RI ͨ¹ý¹æÔòµÄ˳ÐòÖ¸¶¨
iptables -D chain rule num[option]
ɾ³ýÖ¸¶¨¹æÔò
iptables -[LFZ] [chain][option]
ÓÃiptables -LFZ Á´Ãû [Ñ¡Ïî]
iptables -[NX] chain
ÓÃ -NX ......
ʱ¼ä¼ä¸ô¶¨Ê±Æ÷
interval timer(ʱ¼ä¼ä¸ô¶¨Ê±Æ÷)ϵͳµ÷ÓÃ×Ô´Ó±»POSIX±ê×¼»¯ºó£¬Ê״γöÏÖÓÚ4.2BSD£¬Äܹ»Ìṩ±Èalarm()»¹¶àµÄ¿ØÖÆ£º
#include <sys/time.h>
int getitimer(int which, struct itimerval *value);
int setitimer(int which, const struct itimerval *value, struct itimerval *ovalue);
interval ti ......
1¡¢Ìí¼Ó´®¿Ú: ÔÚLinuxÆô¶¯Ö®Ç°£¬ÐéÄâ»ú--¡·ÉèÖÃ--¡·Ìí¼Ó--¡·´®¿Ú--¡·±£´æ--¡·Æô¶¯Linux¡£
2¡¢#minicom £¬³öÏÖÆô¶¯½çÃæ£¬CTRL-A Z ½øÈë°ïÖú½çÃæ
3¡¢¼üÈëO £¬ÅäÖô®¿Ú£¬Ñ¡ÔñµÚÈýÏî“Serial port setup”µã»÷»Ø³µ
4¡¢Í¨¹ý·Ö±ð¼üÈëA¡¢E¡¢F£¬ÅäÖ㬵ã»÷»Ø³µ£¨FÑ ......
ÔÚÉ豸Çý¶¯·½Ã棬Linux2.6Ïà¶ÔÓÚLinux2.4ÓнϴóµÄ¸Ä¶¯£¬ÕâÖ÷Òª±íÏÖÔÚÄÚºËAPIÖÐÔö¼ÓÁ˲»ÉÙй¦ÄÜ£¨ÈçÄÚ´æ³Ø£©¡¢sysfsÎļþϵͳ¡¢ÄÚºËÄ£¿é´Ó.o±äΪ.ko¡¢Çý¶¯Ä£¿é±àÒ뷽ʽ¡¢Ä£¿éʹÓüÆÊý¡¢Ä£¿é¼ÓÔØºÍÐ¶ÔØº¯ÊýµÄ¶¨ÒåµÈ·½Ãæ
LinuxÄÚºËÖ÷ÒªÓнø³Ìµ÷¶È¡¢ÄÚ´æ¹ÜÀí¡¢ÐéÄâÎļþϵͳ¡¢ÍøÂç½Ó¿ÚºÍ½ø³Ì¼äͨÐŵÈ5¸ö×Óϵͳ×é³É£¬ÈçÏÂͼ£º
......
ÎҵĵÚÒ»¸öshell³ÌÐò£ºtt1.sh
while true
do
date;
sleep 1;
done
Ö´Ðз½Ê½1£ºsh tt1.sh
Ö´Ðз½Ê½2£º./tt1.sh£¨ÒªÇó¸ÃÎļþÓпÉÖ´ÐÐȨÏÞ£©
Shell±äÁ¿£º
»·¾³±äÁ¿£º
¹¤¾ß£ºecho »ØÏÔ
&n ......