Linux Socket ѧϰ£¨Ê®£©
Linux Socket ѧϰ£¨Ê®£©
ÔÚÌ×½Ó¿ÚÉÏʹÓñê×¼I/O
ÔÚÇ°ÃæÕ½ڵÄÀý×Ó´úÂëÖÐÎÒÃÇÒѾʹÓÃÁËread(2)»òÊÇwrite(2)ϵͳµ÷ÓÃÔÚÌ×½Ó¿ÚÉÏÖ´ÐжÁÈ¡ºÍдÈë²Ù×÷¡£Õâ¸ö¹æÔòµÄÒ»¸öÀýÍâ¾ÍÊÇrecvfrom(2)ºÍsendto(2)º¯Êý£¬ÕâÁ½¸öº¯ÊýÓÃÀ´¶ÁдÊý¾Ý±¨¡£È»¶ø£¬Ê¹ÓÃreadºÍwritteº¯Êýµ÷ÓÃÈ´ÓÐһЩ³ÌÐòÉϵÄȱµã¡£
ÕâÒ»ÕÂÎÒÃǽ«»áÌÖÂÛÒÔÏÂÄÚÈÝ£º
ÈçºÎʹÓÃfdopen(3)½«Ò»¸öÌ×½Ó¿ÚÓëÒ»¸öFILEÁ÷Ïà¹ØÁª
ÈçºÎ´´½¨²¢¶ÁдFILEÁ÷
¹Ø±ÕÓëÌ×½Ó¿ÚÏà¹ØÁªµÄÁ÷µÄÎÊÌâ
ΪÎÒÃǵÄFILEÁ÷Ñ¡Ôñ²¢´´½¨ºÏÊʵĻº³å¼¼Êõ
ÖжÏϵͳµ÷ÓõÄÎÊÌâ
ÕÆÎÕÁËÕâЩÄÚÈݽ«ÎªÎÒÃÇÌṩ½â¾öÎÒÃÇÍøÂç³ÌÐòµÄ¶îÍâ·½·¨¡£
Àí½â±ê×¼I/OµÄÐèÒª
LinuxÖеÄstdio(3)³ÌÐò·ûºÏANSI C3.159-1989±ê×¼¡£Õâ¸ö½Ó¿ÚµÄ±ê×¼»¯¿ÉÒÔ°ïÖú³ÌÐò½«³ÌÐòÒÆÖ²µ½¶à¸öƽ̨¡£ÀýÈ磬µ±ÎÒÃÇÒª½«Ô´´úÂë´ÓÆäËûµÄUNIXÏµÍ³ÒÆÖ²µ½ÎÒÃÇ×Ô¼ºµÄLinuxƽ̨ʱ£¬Õâ¸ö³ÌÐò¶ÔÓÚÎÒÃÇÀ´ËµÒ²ÐíÓÐÓá£
stdio°ü±¾ÉíÊÇÓëreadºÍwritteµ÷ÓÃÏà³åÍ»¡£È»¶ø£¬ÎÒÃÇȴʹÓñê×¼µÄI/Oµ÷Óã¬ÒòΪ¸ù¾ÝÎÒÃdzÌÐòµÄÐèÒª£¬ËûÃÇ¿ÉÒÔ·½±ãµÄÿ´ÎΪÎÒÃÇÌṩһÐлòÊÇÒ»¸ö×Ö·û¡£ÀýÈ磬readµ÷Ó㬲¢²»»áΪÎÒÃǵijÌÐò·µ»ØÒ»¸öÎı¾ÐС£Ïà·´£¬ËûÃÇ·µ»Ø¾¡¿ÉÄܶàµÄÊý£¬ÉõÖÁÊǶàÐÐÎı¾¡£
µ±Ð´ÈëÌ×½Ó¿Úʱ£¬±ê×¼I/OÀý³Ì¿ÉÒÔÔÊÐíÎÒÃǵijÌÐòÿ´ÎдÈëÒ»¸ö×Ö·û£¬¶ø²»»áÔì³É´óµÄÄÚÈݸ²¸Ç¡£ÁíÒ»·½Ã棬ÿ´Îµ÷ÓÃwritteдÈëÒ»¸ö×Ö·û»¨·ÑÌ«´ó¡£±ê×¼I/Oº¯ÊýÔÊÐíÎÒÃǵijÌÐòʹÓúÏÊʵÄÊý¾Ýµ¥Ôª½øÐвÙ×÷¡£
stdioͬʱÎÒÃǵijÌÐòÌṩÁËÊý¾Ý»º³å¹¦ÄÜ£¬°üÀ¨ÊäÈëÓëÊä³ö¡£µ±Ê¹Óûº³å¹¦ÄÜ£¬¿ÉÒÔ¼«´óµÄ¸ÄÉÆÎÒÃdzÌÐòµÄÐÔÄÜ¡£²»ÐÒµÄÊÇ£¬»º³å»áΪijЩ¸ñʽµÄͨÐÅÔì³ÉÀ§ÄÑ£¬ËùÒÔ²¢²»ÊÇ×ÜÊÇʹÓûº³å¡£
ÔÚÕâÒ»ÕÂÎÒÃǼÙÉèÒѾÊìϤÁËstdioµÄ»ù±¾¹¦ÄÜ¡£Õâͨ³£ÊÇÔÚC³ÌÐò½Ì³Ì£¬Í¬Ê±Ò²ÊÇCÓïÑÔ±¾ÉíËù½ÌµÄÄÚÈÝ¡£ÏàÓ¦µÄ£¬ÕâÒ»ÕÂÎÒÃǽ«»áרעÓÚÎÒÃÇÓ¦ÃÜÇйØ×¢µÄ¶«Î÷£¬¶øÆäËûµÄһЩϸ΢µÄµØ·½²¢²»Ã÷ÏÔ£¬ÒòΪËûÊÊÓÃÓÚÌ×½Ó¿Ú±à³Ì¡£
½«Ò»¸öÌ×½Ó¿ÚÓëÒ»¸öÁ÷Ïà¹ØÁª
stdioÁ÷ÊÇÓÉFILE¿ØÖÆ¿éÀ´½øÐйÜÀíµÄ¡£ÀýÈ磬ÎÒÃÇÒ²ÐíÒѾ¶à´Î±àдÁËÈçÏÂËùʾµÄ´úÂ룺
FILE *in;
in = fopen(pathname,"r");
if ( in == NULL ) {
fprintf(stderr,"%s: opening %s for read.\n",strerror(errno),pathname);
exit(1);
}
ÔÚÕâ¸öÀý×ÓÖУ¬±äÁ¿pathnameËùÖ¸¶¨µÄÎļþ½«»á´ò¿ªÀ´¶Á¡£Èç¹ûopenµ÷Óóɹ¦£¬±äÁ¿in½«»á½ÓÊÕÒ»¸öÖ¸ÏòΪÎÒÃǹÜÀíÁ÷I/OµÄFILE½á¹¹¡£·ñÔò£¬±äÁ¿in½ÓÊÕÒ»¸öNULLÖ¸Õ룬¶øÎÒÃǵijÌÐòÒ²±ØÐë´¦Àí»òÊDZ¨¸æ
Ïà¹ØÎĵµ£º
linuxĿ¼¼Ü¹¹
/ ¸ùĿ¼
/bin ³£ÓõÄÃüÁî binary file µÄÄ¿錄
/boot ´æ·ÅϵͳÆô¶¯Ê±±ØÐë¶ÁÈ¡µÄµµ°¸£¬°üÀ¨ºËÐÄ (kernel) ÔÚÄÚ
/boot/grub/menu.lst GRUBÉèÖÃ
/boot/vmlinuz ÄÚºË
......
1.ʹÓÃshellµÄwhichÃüÁ
È磺²éÕÒGUNµÄC±àÒëÆ÷°²×°Â·¾¶
$ which gcc
/usr/bin/gcc
2.Èç¹ûwhichûÓÐÕÒµ½ÒªÕÒµÄÎļþ£¬ÄǾÍÊÔÊÔwhereis£¬¸ÃÃüÁîËÑË÷¸ü´ó·¶Î§µÄϵͳĿ¼£¬ºÍshellËÑË÷·¾¶Î޹ء£
ÓÐЩϵͳwhichÃüÁîÎÞ·¨ÏÔʾÓû§Ã»Ö´ÐеÄȨÏÞÎļþ£º
È磺which ipppd
$ which ipppd
/usr/bin/which:no ipppd in £¨/bin:/ ......
Linux ÉèÖû·¾³±äÁ¿Ð¡½á
×ªÔØ×Ô£ºhttp://www.roboticfan.com/blog/user_2005/104/archives/2009/2009617176.shtml
1¡¢×ܽᱳ¾°
ÔÚlinuxϵͳÏ£¬Èç¹ûÄãÏÂÔØ²¢°²×°ÁËÓ¦ÓóÌÐò£¬ºÜÓпÉÄÜÔÚ¼üÈëËüµÄÃû³ÆÊ±³öÏÖ“command not found”µÄÌáʾÄÚÈÝ¡£Èç¹ûÿ´Î¶¼µ½°²×°Ä¿±êÎļþ¼ÐÄÚ£¬ÕÒµ½¿ÉÖ´ÐÐÎļþÀ´½øÐвÙ×÷¾ÍÌ«·±Ëö ......
Ò»¡¢chown ÃüÁî
ÓÃ;£º¸ü¸ÄÎļþµÄËùÓÐÕß»ò×é¡£ÃüÁîÓɵ¥´Êchange owner×éºÏ¶ø³É¡£
ʹÓÃʾÀý£º
1£¬¸ü¸ÄÎļþµÄËùÓÐÕߣº
chown jim program.c
Îļþ program.c µÄËùÓÐÕ߸ü¸ÄΪ jim¡£×÷ΪËùÓÐÕߣ¬jim ¿ÉÒÔʹÓà chmod ÃüÁîÔÊÐí»ò¾Ü¾øÆäËûÓû§·ÃÎÊ program.c¡£
2£¬¸ü¸ÄĿ¼µÄËùÓÐÕߣº
chown -R john:build /tmp/src
½«Ä¿Â¼ ......
linuxÍøÂç²ÎÊýÖ÷ҪλÓÚÏÂÃæÁ½¸öĿ¼ÏÂ:/proc/sys/net/core/ºÍ/proc/sys/net/ipv4/, ÏÂÃæ·Ö±ð¶ÔÕâÁ½¸öĿ¼Ï³£ÓõöÍøÂç²ÎÊý×öÏÂ˵Ã÷:
1./proc/sys/net/core/
$ /proc/sys/net/core/somaxconn
listen()µÄĬÈϲÎÊý,¹ÒÆðÇëÇóµÄ×î´óÊýÁ¿.ĬÈÏÊÇ128.¶Ô·±Ã¦µÄ·þÎñÆ÷,Ôö¼Ó¸ÃÖµÓÐÖúÓÚÍøÂçÐÔÄÜ, ¿É²Î¿¼µÄÓÅ»¯Ö ......