linux select Ó÷¨
selectϵͳµ÷ÓÃÊÇÓÃÀ´ÈÃÎÒÃǵijÌÐò¼àÊÓ¶à¸öÎļþ¾ä±ú(file descriptor)µÄ״̬±ä»¯µÄ¡£³ÌÐò»áÍ£ÔÚselectÕâÀïµÈ´ý£¬Ö±µ½±»¼àÊÓµÄÎļþ¾ä±úÓÐijһ¸ö»ò¶à¸ö·¢ÉúÁË״̬¸Ä±ä¡£
ÎļþÔÚ¾ä±úÔÚLinuxÀïºÜ¶à£¬Èç¹ûÄãmanij¸öº¯Êý£¬ÔÚº¯Êý·µ»ØÖµ²¿·Ö˵µ½³É¹¦ºóÓÐÒ»¸öÎļþ¾ä±ú±»´´½¨µÄ¶¼Êǵģ¬Èçman socket¿ÉÒÔ¿´µ½“On success, a file descriptor for the new socket is returned.”¶øman 2 open¿ÉÒÔ¿´µ½“open() and creat() return the new file descriptor”£¬ÆäʵÎļþ¾ä±ú¾ÍÊÇÒ»¸öÕûÊý£¬¿´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£¬0¾ÍÊÇstdin£¬1¾ÍÊÇstdout£¬2¾ÍÊÇstderr¡£
±ÈÈçÏÂÃæÕâÁ½¶Î´úÂë¶¼ÊÇ´Ó±ê×¼ÊäÈë¶ÁÈë9¸ö×Ö½Ú×Ö·û£º
#include <stdio.h>
#include <unistd.h>
#include <string.h>
int main(int argc, char ** argv)
{
char buf[10] = "";
read(0, buf, 9); /* ´Ó±ê×¼ÊäÈë 0 ¶ÁÈë×Ö·û */
fprintf(stdout, "%s\n", buf); /* Ïò±ê×¼Êä³ö stdout д×Ö·û */
return 0;
}
/* **ÉÏÃæºÍÏÂÃæµÄ´úÂë¶¼¿ÉÒÔÓÃÀ´´Ó±ê×¼ÊäÈë¶ÁÓû§ÊäÈëµÄ9¸ö×Ö·û** */
#include <stdio.h>
#include <unistd.h>
#include <string.h>
int main(int argc, char ** argv)
{
char buf[10] = "";
fread(buf, 9, 1, stdin); /* ´Ó±ê×¼ÊäÈë stdin ¶ÁÈë×Ö·û */
write(1, buf, strlen(buf));
return 0;
}
¼ÌÐøÉÏÃæËµµÄ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½á¹¹µÄ±äÁ¿µÄÖ¸Õ룬ËùÒÔÎÒÃÇÔÚ³ÌÐò
Ïà¹ØÎĵµ£º
linux С¼¼ÇÉ
ǰÑÔ£ºÒòΪÓÃLinuxµÄʱ¼äÔ½À´Ô½³¤£¬ËùÐèÒª×öµÄÊÂÒ²Ô½À´Ô½¶à£¬Ð§ÂʳÉÁËÎÒ±ØÐèÍ»ÆÆµÄÆ¿¾±¡£ÔÚ´Ë×ܽáÒ»ÏÂÕâ¶Îʱ¼äÓùýµÄһЩºÃµÄLinux¼¼ÇÉ¡£ÒÔºóʱ³£²¹³äÕâÑù×Ô¼ºÒªÓõÄʱºò¾ÍºÜ·½±ãÁË¡£ Author:Ajian[Îı¾´¦Àí]1¡¢ ...
ǰÑÔ£ºÒòΪÓÃLinuxµÄʱ¼äÔ½À´Ô½³¤£¬ËùÐèÒª×öµÄÊÂÒ²Ô½À´Ô½¶à£¬Ð§ÂʳÉÁËÎÒ±ØÐèÍ»ÆÆµÄÆ¿¾±¡£ ......
[ת]Linux 2.6 ÄÚºËEpollÓ÷¨¾ÙÀý˵Ã÷
epollÓõ½µÄËùÓк¯Êý¶¼ÊÇÔÚÍ·Îļþsys/epoll.hÖÐÉùÃ÷µÄ£¬ÏÂÃæ¼òҪ˵Ã÷ËùÓõ½µÄÊý¾Ý½á¹¹ºÍº¯Êý£º
ËùÓõ½µÄÊý¾Ý½á¹¹:
typedef union epoll_data {
void *ptr;
int fd;
__uint32_t u32;
__uint64_t u64;
......
1.¹Ø»ú
init 0»òÕß halt poweroff
ÖØÐÂÆô¶¯
init 6»òÕß reboot
¹Ø»úµÄʱºò֪ͨÏÂÆäËûÓû§ Shutdown
shutdown -r +5 (Îå·ÖÖÓÖ®ºó¹Ø»ú)
2.ÔÚLinuxÏ¿ÉÒÔʹÓó¤Îļþ»òĿ¼Ãû£¬ÐèÒª×ñѵĹæÔò
/ ½ûֹʹÓÃ
ºó׺ÊÇûÓÐʵ¼ÊÒâÒåµÄ
3.touch a ½¨Á¢Ò»¸öÎļþ
4.shellÃüÁîµÄÒ»°ã¸ñʽ
$cmd ......
1.shell ÊÇϵͳµÄÓû§½çÃæ£¬ÌṩÁËÓû§ÓëÄں˽øÐн»»¥²Ù×÷µÄÒ»ÖÖ½Ó¿Ú£¨ÃüÁî½âÊÍÆ÷£©¡£Ëü½ÓÊÕÓû§ÊäÈëµÄÃüÁî²¢°ÑËüËÍÈëÄÚºËÈ¥Ö´ÐС£Æð
×Åе÷Óû§ÓëϵͳµÄÒ»ÖÂÐÔºÍÔÚÓû§Óëϵͳ֮¼ä½øÐн»»¥µÄ×÷Óá£
ShellÔÚLinuxϵͳÉϾßÓм«ÆäÖØÒªµÄµØÎ»
ShellµÄ°æ±¾£¬LinuxÓкܶàShell
echo $SHELL ²éѯ±¾ÏµÍ³µÄShell
m ......
ΪʲôLinux²»ÄÜÆÕ¼°£¬ÏàÐÅÕâ¸öÎÊÌâʹÓùýLinuxµÄÓû§¶àÉٵͼÄܸоõµ½¡£µ±È»ÔÚÆÕ¼°Õâ·½ÃæËµ£¬ÎÒÃÇÒªÒÔ´óÖڵĹÛÄîÀ´¿´£¬ËùνµÄ´óÖÚ¾ÍÊÇÄÇЩÆÕͨµÄÓû§£¬·ÇרҵµÄÈËÊ¿¡£È«ÇòʹÓõçÄÔµÄ80%µÄÈËȺ»¹ÊÇÆÕͨÓû§£¨ÕâÀïµÄ80%ÊǸù¾ÝÈí¼þ²úÒµµÄ¹æÔòÀ´Ëµ£¬¾ßÌå¶àÉÙÎÒÒ²²»ÖªµÀ£¬O(∩_∩)O~£©£¬ÆÕͨÓû§ÐèҪʲô£¿ËûÃÇÐèÒ ......