ÊÖ»úÕ¾
ÍøÍ¨·ÖÕ¾
µçÐÅÖ÷Õ¾
ÃÜ¡¡Âë:
Óû§Ãû£º
µ±Ç°Î»Öà : Ö÷Ò³>³ÌÐòÉè¼Æ>C/C++>Áбí

Linux Îĵµ·ÃÎÊÔ­Óï

À´Ô´£º»¥ÁªÍø ×÷Õߣºwest263.com ʱ¼ä£º2008-02-23
Î÷²¿ÊýÂë-È«¹úÐéÄâÖ÷»ú10Ç¿£¡40ÓàÏîÐéÄâÖ÷»ú¹ÜÀí¹¦ÄÜ,È«¹úÁìÏÈ!Ë«Ïß¶àÏßÐéÄâÖ÷»úÄϱ±·ÃÎʳ©Í¨ÎÞ×è!Ãâ·ÑÔùËÍÆóÒµÓʾÖ,.CNÓòÃû,×ÔÖú½¨Õ¾480ÔªÆð,Ãâ·ÑÊÔÓÃ7Ìì,ÂúÒâÔÙ¸¶¿î! P4Ö÷»ú×âÓÃ799Ôª/ÔÂ.Ô¸¶Ãâѹ½ð!
¾­ÊÚȨ×Ô 1999 Äê´º¼¾ºÅ Linux ÔÓÖ¾ÖØÓ¡¡£Linux ÔÓÖ¾°æÈ¨ÈκΣ¬ÓÉ Infostrata Communications ³ö°æ¡£
POSIX API ×îÖØÒªµÄÒ»¸ö³éÏó¸ÅÄî¾ÍÊÇÎĵµ¡£¾¡¹Ü¼¸ºõÈκεIJÙ×÷ϵͳ¶¼½«ÎĵµÓÃÓÚÓÀ¾ÃÐÔ´æ´¢Æ÷£¬µ«ÈκΠUnix °æ±¾Í¨¹ýÎĵµ³éÏó¸ÅÄîÌṩ¶Ô´ó¶àÊýϵͳ×ÊÔ´µÄ·ÃÎÊ¡£

¸ü¾ßÌåµØËµ£¬ÕâÒâζ×Å Linux ʹÓÃÏàͬµÄÒ»×éϵͳµ÷ÓÃÀ´Ìṩ¶ÔÉ豸£¨ÀýÈçÈíÅ̺ʹŴøÉ豸£©¡¢ÍøÂç×ÊÔ´£¨×î³£¼ûµÄÊÇ TCP/IP Á¬½Ó£©¡¢ÏµÍ³ÖÕ¶Ë£¬ÉõÖÁÄÚºË״̬ÐÅÏ¢µÄ·ÃÎÊ¡£¸ÐлÎÞËù²»ÔÚµÄϵͳµ÷Óã¬æµÊìµØÊ¹ÓúÍÎĵµÏà¹ØµÄµ÷ÓöÔÓÚÿ¸ö Linux ³ÌʽԱÀ´Ëµ¶¼ºÜÖØÒª¡£ÈÃÎÒÃÇ×Ðϸ²é¿´Ò»ÏÂÎĵµ API ±³ºóµÄһЩ»ù±¾¸ÅÄ²¢ÃèÊö×îÖØÒªµÄÎĵµÏà¹ØÏµÍ³µ÷Óá£

Linux ÌṩÐí¶à²»Í¬ÖÖÀàµÄÎĵµ¡£×î³£¼ûµÄÀàÐ;ͼò³ÆÎª³£¹æÎĵµ£¬Ëû´æ´¢´óÁ¿ÓÃÓÚÒÔºó·ÃÎʵÄÐÅÏ¢¡£ÄúËùʹÓõľø´ó²¿·ÖÎĵµ -- ÀýÈç¿ÉÖ´ÐÐÎĵµ£¨Èç /bin/vi£©¡¢Êý¾ÝÎĵµ£¨Èç /etc/passwd£©ºÍϵͳ¶þ½øÖÆÎĵµ£¨Èç /lib/libc.so.6£©-- ¶¼Êdz£¹æÎĵµ¡£ËûÃÇͨ³£×¤ÁôÔÚ´ÅÅÌÉϵÄij´¦£¬µ«ÎÒÃÇÉÔºó»á·¢ÏÖ£¬²¢²»Ò»¶¨¶¼ÊÇÕâÖÖÇé¿ö¡£

ÁíÒ»ÖÖÎĵµÀàÐÍÊÇĿ¼£¬Ëû°üº¬ÁËÒ»¸öÆäËûÎĵµ¼°ÆäλÖõÄÁÐ±í¡£Ê¹Óà ls ÃüÁîÁгöĿ¼ÖеÄÎĵµÊ±£¬Ëû´ò¿ª¸ÃĿ¼µÄÎĵµ£¬²¢´òÓ¡³öËûËù°üº¬µÄÈκÎÎĵµµÄÐÅÏ¢¡£

ÆäËûÎĵµÀàÐͰüÀ¨¿éÉ豸£¨±íʾÎĵµÏµÍ³¸ßËÙ»º´æµÄÉ豸£¬ÀýÈçÓ²ÅÌÇý¶¯Æ÷£©¡¢×Ö·ûÉ豸£¨±íʾ·Ç¸ßËÙ»º´æµÄÉ豸£¬ÀýÈç´Å´øÇý¶¯Æ÷¡¢Êó±êºÍϵͳÖÕ¶Ë£©¡¢¹ÜµÀºÍÌ×½Ó×Ö£¨ÔÊÐí½ø³ÌÏ໥֮¼ä¶Ô»°£©£¬Á¬Í¬·ûºÅÁ´½Ó£¨ÔÊÐíÎĵµÔÚĿ¼²ã´Î½á¹¹ÖÐÓжà¸öÃû³Æ£©¡£

´ó¶àÊýÎĵµ¶¼ÓÐÒ»¸ö»ò¶à¸öÒýÓÃËûÃǵķûºÅÃû¡£ÕâЩ·ûºÅÃûÊÇÒ»×éÓÉ / ×Ö·û¶¨½çµÄ×Ö·û´®£¬²¢ÏòÄں˱êʶÎĵµ¡£ËûÃÇÊÇ Linux Óû§ËùÊìϤµÄ·¾¶Ãû£»ÀýÈ磬·¾¶Ãû /home/ewt/article ÒýÓõÄÊÇÎÒÊÖÌáµçÄÔÖаüº¬ÕâÆªÎÄÕÂÎı¾µÄÎĵµ¡£Ã»ÓÐÁ½¸öÎĵµÄܹ»¹²ÏíÏàͬµÄÃû³Æ£¨µ«µ¥Ò»ÎĵµÄܹ»Óжà¸öÃû³Æ£©£¬Òò´Ë·¾¶ÃûΨһµØ±êʶµ¥Ò»Îĵµ¡£

½ø³ÌÄܹ»·ÃÎʵÄÿ¸öÎĵµ¶¼ÓÉÒ»¸öСµÄ·Ç¸ºÕûÊý±êʶ£¬³ÆÎª¡°ÎĵµÃèÊö·û¡±¡£ÎĵµÃèÊö·ûÓÉ´ò¿ªÎĵµµÄϵͳµ÷Óô´½¨£¬²¢ÓÉ´Óµ±Ç°½ø³Ì´´½¨µÄÐÂ×Ó½ø³Ì¼Ì³Ð¡£¾ÍÊÇ˵£¬µ±½ø³ÌÆô¶¯ÁËÒ»¸öгÌʽʱ£¬Ô­Ê¼½ø³ÌµÄ´ò¿ªÎĵµÍ¨³£ÊÇÓÉгÌʽ¼Ì³ÐµÄ¡£

°´ÕÕÔ¼¶¨£¬´ó¶àÊý³Ìʽ±£ÁôǰÈý¸öÎĵµÃèÊö·û£¨0¡¢1 ºÍ 2£©ÓÃÓÚÌØ±ðÄ¿µÄ -- ·ÃÎÊËùνµÄ±ê×¼Êä³ö¡¢±ê×¼Êä³öºÍ±ê×¼´íÎóÁ÷¡£ÎĵµÃèÊö·û 0 ÊDZê×¼ÊäÈ룬ÕâÀïÐí¶à³Ìʽ¶¼½«´ÓÍⲿÊÀ½ç½ÓÊÕÊäÈë¡£ÎĵµÃèÊö·û 1 ÊDZê×¼Êä³ö¡£´ó¶àÊý³ÌʽÔÚÕâÀïÏÔʾÕý³£µÄÊä³ö¡£¶ÔÓںʹíÎóÇé¿öÏà¹ØµÄÊä³ö£¬Ê¹ÓÃÎĵµÃèÊö·û 2£¨±ê×¼´íÎ󣩡£

ÈκÎϰ¹ßʹÓà Linux shell µÄÈ˶¼Ôø¿´µ½¹ý±ê×¼ÊäÈë¡¢Êä³öºÍ´íÎóÎĵµÃèÊö·ûµÄʹÓá£Í¨³££¬shell ÔËÐÐÃüÁîʱ´øÎĵµÃèÊö·û 0¡¢1 ºÍ 2£¬¶¼ÊÇÖ¸ shell µÄÖÕ¶Ë¡£µ±Ê¹Óà > ×Ö·ûָʾ shell ½«Ò»¸ö³ÌʽµÄÊä³ö·¢Ë͸øÁíÒ»¸ö³Ìʽʱ£¬shell ÔÚµ÷ÓÃгÌʽ֮ǰ´ò¿ª¸ÃÎĵµ×÷ΪÎĵµÃèÊö·û 1¡£Õ⽫µ¼Ö³Ìʽ½«ËûµÄÊä³ö·¢Ë͸øÖ¸¶¨µÄÎĵµ¶ø²»ÊÇÓû§ÖÕ¶Ë£»ÆäÃî´¦ÊÇ£¬¶ÔÓÚ³Ìʽ±¾Éí£¬ÕâÊÇ͸Ã÷µÄ£¡

ºÍÖ®ÀàËÆ£¬"<" ×Ö·ûָʾ shell ʹÓÃÌØ¶¨µÄÎĵµ×÷ΪÎĵµÃèÊö·û 0¡£ÕâÑù¾ÍÇ¿ÆÈ³Ìʽ´Ó¸ÃÎĵµÖжÁÈ¡ËûµÄÊäÈ룻ÕâÁ½ÖÖÇé¿öÏ£¬ÈκÎÀ´×Ô³ÌʽµÄ´íÎóÈÔ½«³öÏÖÔÚÖÕ¶ËÉÏ£¬ÈçͬËûÃÇÔÚÎĵµÃèÊö·û 2 µÄÇé¿öÏ·¢Ë͸ø±ê×¼´íÎóÏàͬ¡££¨ÔÚ "bash" shell ÖУ¬Äܹ»Ê¹Óà 2> ¶ø²»ÊÇ > ½«±ê×¼´íÎóÖØ¶¨Ïò£©¡£ÕâÖÖÀàÐ͵ÄÎĵµÖض¨ÏòÊÇ Linux ÃüÁîÐÐ×îÇ¿´óµÄÌØÐÔÖ®Ò»¡£

ʹÓÃÈκκÍÎĵµÏà¹ØµÄϵͳµ÷ÓÃ֮ǰ£¬³ÌʽӦ¸Ã°üÀ¨ ºÍ £»ËûÃÇΪ×îÆÕ±éµÄÎĵµÀý³ÌÌṩÁ˺¯ÊýÔ­Ðͺͳ£Êý¡£ÔÚÏÂÃæµÄʾÀý´úÂëÖУ¬ÎÒÃǼÙÉèÿ¸ö³Ìʽ¿ªÊ¼´¦¶¼ÓÐ



#include
#include


Ê×ÏÈ£¬ÈÃÎÒÃÇÁ˽âÈçºÎ¶ÁдÎĵµ¡£Æ¾Ö±¾õ¾ÍÄܹ»ÖªµÀ£¬read() ºÍ write() ϵͳµ÷ÓÃÊÇÖ´ÐÐÕâЩ²Ù×÷µÄ×î³£Ó÷½·¨¡£ÕâÁ½ÖÖϵͳµ÷Óý«ÓÐÈý¸ö×Ô±äÁ¿£ºÒª·ÃÎʵÄÎĵµÃèÊö·û¡¢Ö¸ÏòÒª¶ÁдµÄÐÅÏ¢µÄÖ¸ÕëÁ¬Í¬Ó¦¸Ã¶ÁдµÄ×Ö·ûÊý¡£·µ»Ø³É¹¦¶ÁдµÄ×Ö·ûÊý¡£Çåµ¥ 1 ˵Ã÷ÁËÒ»¸ö¼òµ¥µÄ³Ìʽ£¬Ëû´Ó±ê×¼ÊäÈ루ÎĵµÃèÊö·û 0£©ÖжÁȡһÐУ¬²¢½«ËûдÈë±ê×¼Êä³ö£¨ÎĵµÃèÊö·û 1£©£º


Çåµ¥ 1£º

void main(void) {
char buf[100];
int num;

num = read(0, buf, sizeof(buf));
write(1, "I got: ", 7); /* Length of "I got: " is 7! */
write(1, buf, num);
}



¹ØÓÚÕâ¸ö´¦ÀíÓÐÁ½¸öÖµµÃ×¢ÒâµÄÎÊÌâ¡£Ê×ÏÈ£¬ÎÒÃÇÐèÒª read() ·µ»Ø 100 ¸ö×Ö·û£¬µ«¼ÙÈçÎÒÃÇÔËÐÐÕâ¸ö³Ìʽ£¬Ö»ÓÐÔÚÓû§°´ÏÂÁË "enter" ¼üÒÔºó²ÅÄÜ»ñµÃÊäÈë¡£Ðí¶àÎĵµ²Ù×÷¶¼¸ù¾Ý×îºÃЧ¹û¹¤×÷£ºËûÃdz¢ÊÔ·µ»Ø³ÌʽÐèÒªµÄÈκÎÐÅÏ¢£¬µ«Ö»Óв¿·ÖÄܹ»³É¹¦¡£È±Ê¡Çé¿öÏ£¬ÖÕ¶ËÅäÖóÉÒ»µ©´æÔÚ "\n" »òÐÂÐзû£¨Í¨¹ý°´ "enter" ¼ü²úÉú£©Ê±£¬¾Í´Ó read() µ÷Ó÷µ»Ø¡£Õâʵ¼ÊÉϺܷ½±ã£¬ÒòΪ´ó¶àÊýÓû§¶¼Ï£Íû³ÌʽÎÞÂÛÈçºÎ¶¼ÊÇÃæÏòÐеġ£µ«³£¹æÊý¾ÝÎĵµ²¢·ÇÈç´Ë£¬¼ÙÈçÒÀ¿¿Ëû¾Í¿ÉÄܲúÉú²»¿ÉÔ¤ÁϵĽá¹û¡£

ÁíÒ»¸öҪעÒâµÄÎÊÌâÊÇÎÒÃDz»±ØÔÚÏÔʾÊä³öºóдһ¸ö \n¡£read() µ÷ÓøøÁËÎÒÃÇÀ´×ÔÓû§µÄ \n£¬Ö»½«ÄǸö \n ͨ¹ý write() д»Ø±ê×¼Êä³ö¡£¼ÙÈçÄúÏ£ÍûÔÚûÓÐÐÂÐзûµÄÇé¿öÏ¿´µ½·¢ÉúµÄʼþ£¬³¢ÊÔ½«×îºóÒ»ÐиÄΪ



write(1, buf, num - 1);


ÓйØÕâ¸ö¼òµ¥Ê¾ÀýµÄ×îºóÒ»µã£ºbuf ¾ø¶Ô²»°üº¬Êµ¼ÊµÄ C ×Ö·û´®¡£C ×Ö·û´®Óɱê¼Ç×Ö·û´®½áÊøµÄµ¥Ò» \0 ×Ö·ûÖÕÖ¹¡£ÒòΪ read() ²»½« \0 Ìí¼Óµ½»º³åÇøµÄ½á⣬ÔÚ read() ÉÏʹÓà strlen()£¨»òÈÎºÎÆäËû C ×Ö·û´®º¯Êý£©½«¿ÉÄÜÖý³É´ó´í£¡ÕâÖÖÐÐΪÄܹ»Èà read() ºÍ write() ¶Ô°üÀ¨ \0 ×Ö·ûµÄÊý¾Ý´¦Àí£¬¶øÕâ¶ÔÓÚÒ»°ã×Ö·û´®º¯ÊýÀ´ËµÊDz»¿ÉÄܵġ£

read() ºÍ write() ϵͳµ÷ÓÃÄܹ»¶Ô¾ø´ó¶àÊýÎĵµÆð×÷Óᣵ«ËûÃDz»¶ÔĿ¼Æð×÷Óã¬Ä¿Â¼Ó¦¸Ãͨ¹ýÌØ±ðº¯Êý£¨ÀýÈç readdir()£©À´·ÃÎÊ¡£ÁíÍ⣬read() ºÍ write() ¶ÔÓÚijЩÀàÐ͵ÄÌ×½Ó×ÖÒ²²»Æð×÷Óá£

ijЩÎĵµ£¬ÀýÈç³£¹æÎĵµºÍ¿éÉ豸Îĵµ£¬Ê¹ÓÃÎĵµÖ¸ÕëµÄ¸ÅÄî¡£ËûÖ¸¶¨ÔÚÎĵµÖУ¬ÏÂÒ»¸ö read() µ÷ÓôÓÄÄÀï¶ÁÈ¡£¬ÏÂÒ»¸ö write() µ÷ÓôÓÄÄÀïдÈë¡£read() »ò write() ºó£¬ÎĵµÖ¸ÕëËæ×ÅÒÑ´¦ÀíµÄ×Ö·ûÊý£¨ÔÚÄÚ²¿£¬Í¨¹ýÄںˣ©Ôö¼Ó¡£ÕâÑù£¬Ê¹Óõ¥Ò»Ñ­»·¾ÍÄܹ»·½±ãµØ¶ÁÈ¡ÎĵµÖеÄÈκÎÊý¾Ý¡£Çåµ¥ 2 ¾ÍÊÇʾÀý£º


Çåµ¥ 2£º

char buffer[1024];

while ((num = read(0, buffer, 1024))) {

ÎÄÕÂÕûÀí£ºÎ÷²¿ÊýÂë--רҵÌṩÓòÃû×¢²á¡¢ÐéÄâÖ÷»ú·þÎñ
http://www.west263.com
ÒÔÉÏÐÅÏ¢ÓëÎÄÕÂÕýÎÄÊDz»¿É·Ö¸îµÄÒ»²¿·Ö,Èç¹ûÄúÒª×ªÔØ±¾ÎÄÕÂ,Çë±£ÁôÒÔÉÏÐÅÏ¢£¬Ð»Ð»!