µ±Ç°Î»ÖãºÊ×Ò³ > ºÓ±±¹¤Òµ´óѧ²Ù×÷ϵͳʵÑ鱨¸ælinux - ºÍwindows²¿·Ö
Èí¼þc122¹ùáÉá¿ 125448
²Ù×÷ϵͳʵÑ鱨¸æ
2.3 Linux²¢·¢³ÌÐòÉè¼Æ
(ʵÑé¹À¼ÆÊ±¼ä£º90·ÖÖÓ)
? ±³¾°ÖªÊ¶ ? ʵÑéÄ¿µÄ
? ¹¤¾ß/×¼±¸¹¤×÷ ? ʵÑéÄÚÈÝÓë²½Öè
±³¾°ÖªÊ¶
¹ÜµÀÊÇLinuxÖÐ×î³£ÓõĽø³Ì¼äͨÐÅIPC»úÖÆ¡£ÀûÓùܵÀʱ£¬Ò»¸ö½ø³ÌµÄÊä³ö¿É³ÉΪÁíÍâÒ»¸ö½ø³ÌµÄÊäÈë¡£µ±ÊäÈëÊä³öµÄÊý¾ÝÁ¿Ìرð´óʱ£¬ÕâÖÖIPC»úÖÆ·Ç³£ÓÐÓ᣿ÉÒÔÏëÏó£¬Èç¹ûûÓйܵÀ»úÖÆ£¬¶ø±ØÐëÀûÓÃÎļþ´«µÝ´óÁ¿Êý¾Ýʱ£¬»áÔì³ÉÐí¶à¿Õ¼äºÍʱ¼äÉϵÄÀË·Ñ¡£
ÔÚLinuxÖУ¬Í¨¹ý½«Á½¸öfile½á¹¹Ö¸Ïòͬһ¸öÁÙʱµÄË÷Òý½Úµã£¬¶øÁ½¸öË÷Òý½ÚµãÓÖÖ¸Ïòͬһ¸öÎïÀíÒ³¶øÊµÏֹܵÀ¡£ ʵÑéÄ¿µÄ
1) ͨ¹ýÔÚLinux½ø³ÌÖ®¼ä½øÐеÄͨÐÅʵÀýÀ´Ñ§Ï°²¢·¢³ÌÐòÉè¼ÆµÄ·½·¨¡£ 2) ͨ¹ýLinux½ø³ÌͨÐŵijÌÐòÉè¼ÆÓëʵÏÖ£¬½øÒ»²½ÊìϤ²Ù×÷ϵͳµÄ½ø³Ì¸ÅÄÀí½âLinux½ø³Ì¹ÜÀí¸ÅÄî¡£
3) ͨ¹ýÔĶÁºÍ·ÖÎöLinuxʵÑé³ÌÐò£¬Ñ§Ï°Linux³ÌÐòÉè¼Æ¡¢µ÷ÊÔºÍÔËÐеķ½·¨¡£ ¹¤¾ß/×¼±¸¹¤×÷
ÔÚ¿ªÊ¼±¾ÊµÑé֮ǰ£¬Çë»Ø¹Ë½Ì¿ÆÊéµÄÏà¹ØÄÚÈÝ¡£ ÐèҪ׼±¸Ò»Ì¨ÔËÐÐLinux²Ù×÷ϵͳµÄ¼ÆËã»ú¡£ ʵÑéÄÚÈÝÓë²½Öè
²¢·¢³ÌÐòµÄÉè¼Æ¹Ø¼üÊÇʹÓô´½¨½ø³ÌµÄϵͳµ÷Óã¬Ê¹Ò»¸ö³ÌÐòÔËÐÐʱ¿ÉÒÔÉú³É¼¸¸öͬʱÔËÐеijÌÐò£¬Èç¹û³ÌÐòÖÐûÓд´½¨½ø³ÌµÄ¶¯×÷ÔòΪ˳Ðò³ÌÐòÉè¼Æ¡£
±¾ÊµÑéÖеIJ¢·¢³ÌÐòÀý×ÓÍê³ÉÁ½¸ö³ÌÐòchildºÍfatherÖ®¼äµÄÊý¾Ý´«µÝ¹¤×÷£¬¾ßÌå×ö·¨·ÖΪËIJ½¡£
²½Öè1£º±àÖÆ²¢·¢³ÌÐòpipeline.c¡£
µ¥»÷ºìñ×Ó£¬ÔÚ¡°GNOME°ïÖú¡±²Ëµ¥Öе¥»÷¡°¸½¼þ¡±-¡°Îı¾±à¼Æ÷¡±ÃüÁÔÚÎı¾±à¼ÖмüÈë³ÌÐò²¢±£´æÎªpipeline.c¡£
Èí¼þc122¹ùáÉá¿ 125448
ÔڸóÌÐòÖж¨Òå¹ÜµÀºÍÎļþÃèÊö·û£¬²¢ÇÒ´´½¨×Ó½ø³Ìchild¡£¸Ã³ÌÐòÓõ½µÄϵͳµ÷ÓÃÓÐpipe() ¡¢dup() ¡¢fork() ¡¢close¡¢execl() ¡¢exit£¬ËüÃǵŦÄÜ·Ö±ðÊǽ¨Á¢¹ÜµÀ¡¢¸´ÖÆÎļþÃèÊö·û¡¢´´½¨½ø³Ì²¢Ê¹×Ó½ø³ÌÓ븸½ø³ÌÓÐÏàͬµÄ³ÌÐòÕýÎÄ¡¢¹Ø±ÕÎļþÃèÊö·û¡¢ÓÃÖ¸¶¨Îļþ¸²¸Çµ÷ÓóÌÐò¡¢³·Ïúµ±Ç°½ø³Ì¡£
Çåµ¥4-5 pipeline.c
// ¶¨Òå¹ÜµÀ³ÌÐò
# define STD_INPUT 0 // ¶¨Òå±ê×¼ÊäÈëÉ豸ÃèÊö·û # define STD_OUTPUT 1 // ¶¨Òå±ê×¼Êä³öÉ豸ÃèÊö·û
int fd[2];
main() {
static char process1[]=\
pipe(fd); // ¶¨Òå¹ÜµÀ pipeline(process1,process2); // µ÷ÓÃ×Ô¶¨Ò庯Êýpipeline() exit(1); // ³ÌÐò½áÊø
}
pipeline(char* process1,char* process2) {
int i; while ((i=fork())==-1); // ´´½¨½ø³Ì£¬Ö±µ½´´½¨³É¹¦ÎªÖ¹ if (i) { close(fd[0]); // ¹Ø±Õ¹ÜµÀÊäÈëÃèÊö·û close(STD_OUTPUT); // ¹Ø±Õ±ê×¼Êä³öÃèÊö·û1 dup(fd[1]); // Ö¸¶¨±ê×¼Êä³öÃèÊö·û1Ϊ¹ÜµÀдָÕë close(fd[1]); // ¹Ø±ÕÔʼ¹ÜµÀдָÕë
execl(process1, process1, 0); // ÓóÌÐòfather¸²¸Çµ±Ç°³ÌÐò
printf(\ // execl()Ö´ÐÐʧ°Ü } else { close(fd[1]); // ¹Ø±Õ¹ÜµÀÊä³öÃèÊö·û close(STD_INPUT); // ¹Ø±Õ±ê×¼ÊäÈëÃèÊö·û0 dup(fd[0]); // Ö¸¶¨±ê×¼ÊäÈëÃèÊö·û0Ϊ¹ÜµÀ¶ÁÖ¸Õë close(fd[0]); // ¹Ø±ÕÔʼ¹ÜµÀ¶ÁÖ¸Õë execl(process2,process2,0); // ÓóÌÐòchild¸²¸Çµ±Ç°³ÌÐò printf(\ // execl()Ö´ÐÐʧ°Ü } exit(2); // ³ÌÐò½áÊø
}
²½Öè2£º±àÖÆ¡°¹ÜµÀд¡±³ÌÐòfather.c×÷Ϊ¸¸½ø³ÌµÄÒ»²¿·Ö¹¤×÷¡£ÆäÄÚÈÝÈçÏ£º
µ¥»÷ºìñ×Ó£¬ÔÚ¡°GNOME°ïÖú¡±²Ëµ¥Öе¥»÷¡°¸½¼þ¡±-¡°Îı¾±à¼Æ÷¡±ÃüÁÔÚÎı¾±à¼ÖмüÈë³ÌÐò²¢±£´æÎªfather.c¡£
Çåµ¥4-6 father.c
main() {
static char string[] = ¡°Parent is using pipe write.¡± ; int len;
len = sizeof(string) ; write(l, string, len) ; /* ½«stringÖеÄÄÚÈÝдÈë¹ÜµÀÖÐ */ printf(¡°parent, parent, parent \\n \\n \\n¡± ) ; exit(0) ; }
²½Öè3£º±àÖÆ¡°¹ÜµÀ¶Á¡±³ÌÐòchild.c×÷Ϊ×Ó½ø³ÌµÄÒ»²¿·Ö¹¤×÷¡£ÆäÄÚÈÝÈçÏ£º
µ¥»÷ºìñ×Ó£¬ÔÚ¡°GNOME°ïÖú¡±²Ëµ¥Öе¥»÷¡°¸½¼þ¡±-¡°Îı¾±à¼Æ÷¡±ÃüÁÔÚÎı¾±à¼ÖмüÈë³ÌÐò²¢±£´æÎªchild.c¡£
Çåµ¥4-7 child.c
Èí¼þc122¹ùáÉá¿ 125448
main() {
char output[30] ;
read (0, output, 30) ; /* ´Ó¹ÜµÀÖжÁÊý¾Ý²¢´æÈëoutputÖÐ */ printf(¡°%s \\n child, child. \\n¡± , output) ; return(0) ; }
²½Öè4£º±àÒë¡£
cc ¨Co child child.c cc ¨Co father father.c cc ¨Co pipeline pipeline.c ²½Öè5£ºÔËÐС£
./pipeline ÈôÔËÐв»³É¹¦£¬ÔòÓ¦¸ÃÓÃÎı¾±à¼Æ÷¶ÔÔ´³ÌÐò½øÐÐÐ޸ĵ÷ÊÔ¡£
2.4 LinuxÖØ¶¨ÏòºÍ¹ÜµÀ
(ʵÑé¹À¼ÆÊ±¼ä£º90·ÖÖÓ)
? ? ? ? ?
±³¾°ÖªÊ¶ ʵÑéÄ¿µÄ
¹¤¾ß/×¼±¸¹¤×÷ ʵÑéÄÚÈÝÓë²½Öè ¿ÉÑ¡Á·Ï°
±³¾°ÖªÊ¶
ÔÚ±¾ÊµÑéÖУ¬ÎÒÃǽ«Ê¹Óø߼¶LinuxÃüÁîÀ´Íê³ÉÖØ¶¨ÏòºÍ¹ÜµÀ¡£Ã¿Ò»¸öLinuxÃüÁî¶¼ÓÐÒ»¸öÔ´×÷Ϊ±ê×¼ÊäÈ룬һ¸öÄ¿µÄ×÷Ϊ±ê×¼Êä³ö¡£ÃüÁîµÄÊäÈëͨ³£À´×Ô¼üÅÌ (¾¡¹ÜËüÒ²¿ÉÒÔÀ´×ÔÎļþ) ¡£ÃüÁîͨ³£Êä³öµ½¼àÊÓÆ÷»òÕ߯ÁÄ»ÉÏ¡£Linux¼ÆËã»·¾³Ê¹ÓÃÖØ¶¨Ïò¿ÉÒÔ¿ØÖÆÃüÁîµÄI/O¡£µ±ÊÔͼ°ÑÃüÁîµÄÊä³ö±£´æµ½Ò»¸öÎļþ£¬ÒÔ¹©ÒÔºó²é¿´µÄʱºòÊǺÜÓÐÓõġ£Í¨¹ý¹ÜµÀ£¬¿ÉÒÔÈ¡µÃÒ»¸öÃüÁîµÄÊä³ö£¬°ÑËü×÷ΪÁíÒ»¸öÃüÁîµÄ½øÒ»²½´¦ÀíµÄÊäÈë¡£
Óм¸¸öÔª×Ö·û¿ÉÓÃÓÚÊäÈë/Êä³öÖØ¶¨Ïò·ûºÅ£ºÊä³öÖØ¶¨ÏòʹÓÃÓÒ¼âÀ¨ºÅ (>£¬ÓֳƴóÓÚºÅ) £»ÊäÈëÖØ¶¨ÏòʹÓÃ×ó¼âÀ¨ºÅ (<£¬ÓÖ³ÆÐ¡ÓÚºÅ) £»³ö´íÊä³öÖØ¶¨ÏòʹÓÃÓÒ¼âÀ¨ºÅ֮ǰÓÐÒ»¸öÊý×Ö2 (Èç2>) ¡£±¾ÊµÑéÖØµãÔÚÊä³öÖØ¶¨Ïò¡£
ÖØ¶¨ÏòÃüÁîµÄ¸ñʽÊÇ£º
Command Redirection-Symbol File (text file or device file)
±ê×¼Êä³ö±È±ê×¼ÊäÈë»ò±ê×¼³ö´í¸ü¾³£±»Öض¨Ïò¡£Ðí¶àÃüÁÈçls¡¢cat¡¢headºÍtail²úÉú±ê×¼Êä³öµ½ÆÁÄ»ÉÏ£¬³£³£»áÏ£Íû°ÑÕâ¸öÊä³öÖØ¶¨Ïòµ½Ò»¸öÎļþÖУ¬ÒԱ㽫À´²é¿´¡¢´¦Àí»òÕß´òÓ¡¡£Í¨¹ýÌæ»»ÎļþÃû£¬¿ÉÒԽػñÃüÁîµÄÊä³ö£¬¶ø²»ÊÇÈÃËüµ½´ïĬÈϵļàÊÓÆ÷ÉÏ¡£
×îÇ¿´óµÄÔª×Ö·ûÖ®Ò»ÊǹܵÀ·ûºÅ (|) ¡£¹ÜµÀÈ¡µÃÒ»¸öÃüÁîµÄ±ê×¼Êä³ö£¬°ÑËü×÷Ϊ±ê×¼ÊäÈë´«µÝ¸øÏÂÒ»¸öÃüÁî (ͨ³£ÎªmoreÃüÁî¡¢lp (ÐÐʽ´òÓ¡»ú) ÃüÁî»òÕßÒ»¸öÎļþ´¦ÀíÃüÁÈçgrep»òsort) ¡£±ØÐëÔڹܵÀµÄÿ±ß¶¼ÓÐÒ»¸öÃüÁÃüÁîºÍ¹ÜµÀÖ®¼äµÄ¿Õ¸ñÊÇ¿ÉÑ¡µÄ¡£
¹ÜµÀÃüÁîµÄ¸ñʽÊÇ£º command | command ʵÑéÄ¿µÄ
ͨ¹ýÖØ¶¨ÏòºÍ¹ÜµÀ²Ù×÷£º
Èí¼þc122¹ùáÉá¿ 125448
1) ÊìϤÊäÈë/Êä³ö (I/O) ÖØ¶¨Ïò£» 2) °Ñ±ê×¼Êä³öÖØ¶¨Ïò´´½¨Ò»¸öÎļþ£» 3) ·ÀֹʹÓÃÖØ¶¨ÏòµÄʱºò¸²¸ÇÎļþ£» 4) °ÑÊä³ö×·¼Óµ½Ò»¸öÏÖÓеÄÎļþÖУ»
5) °ÑÒ»¸öÃüÁîµÄÊä³öµ¼Èëµ½ÁíÒ»¸öÃüÁîÖС£ ¹¤¾ß/×¼±¸¹¤×÷
ÔÚ¿ªÊ¼±¾ÊµÑé֮ǰ£¬Çë»Ø¹Ë½Ì¿ÆÊéµÄÏà¹ØÄÚÈÝ¡£ ÄúÐèÒª×öÒÔÏÂ×¼±¸£º
1) ÓÉÖ¸µ¼ÀÏʦ·ÖÅäµÄµÇ¼Óû§Ãû (Èçuser2) ºÍ¿ÚÁî¡£
2) һ̨ÔËÐÐRed Hat Linux²Ù×÷ϵͳ£¬´øÓÐGNOMEµÄ¼ÆËã»ú¡£ ʵÑéÄÚÈÝÓë²½Öè
1. ʹÓÃÖØ¶¨Ïò±ê×¼Êä³ö·ûºÅ 2. ʹÓùܵÀ·ûºÅ
ÔÚ±¾ÊµÑéÖн«»áÓõ½ÏÂÁÐÃüÁ pwd£º ÏÔʾµ±Ç°µÄ¹¤×÷·¾¶¡£ cd£º ¸Ä±äĿ¼·¾¶¡£ ls£º ÏÔʾָ¶¨Ä¿Â¼µÄÄÚÈÝ¡£ more£º ·ÖÒ³ÏÔʾÎļþµÄÄÚÈÝ¡£ÕâÊÇÓÃÓÚÏÔʾÎı¾ÎļþµÄÊ×Ñ¡·½·¨¡£ head£º ½ØÈ¡ÏÔʾÎļþµÄ¿ªÍ·²¿·Ö (ĬÈÏΪ¿ªÍ·10ÐÐ) ¡£ tail£º ½ØÈ¡ÏÔʾÎļþµÄ½áβ²¿·Ö (ĬÈÏΪ×îºó10ÐÐ) ¡£ cal£º ÓйØÈÕÀúµÄÃüÁî¡£ set£º shellÌØÐÔµÄÉèÖᣠecho£º ÏÔʾ±äÁ¿µÄÖµ¡£ ps£º ÏÔʾµ±Ç°½ø³Ì¡£ data£º ÏÔʾ»òÉèÖÃϵͳÈÕÆÚºÍʱ¼ä¡£ grep£º ²éÕÒÎļþÖÐÓÐÎÞÖ¸¶¨µÄ¹Ø¼ü×Ö¡£
Ìáʾ£ºÈç¹û¶ÔÃüÁîµÄ¸ñʽ²»Çå³þ£¬¿ÉÒÔÓÃmanÃüÁîÇëÇó°ïÖú£¬¼´£º man more
²½Öè1£º¿ª»ú£¬µÇ¼½øÈëGNOME¡£
ÔÚGNOMEµÇ¼¿òÖÐÌîдָµ¼ÀÏʦ·ÖÅäµÄÓû§ÃûºÍ¿ÚÁî²¢µÇ¼¡£ ²½Öè2£º·ÃÎÊÃüÁîÐС£
µ¥»÷ºìñ×Ó£¬ÔÚ¡°GNOME°ïÖú¡±²Ëµ¥Öе¥»÷¡°ÏµÍ³¹¤¾ß¡±-¡°ÖÕ¶Ë¡±ÃüÁ´ò¿ªÖÕ¶Ë´°¿Ú¡£
1. ʹÓÃÖØ¶¨Ïò±ê×¼Êä³ö·ûºÅ
²½Öè3£ºÖض¨Ïò±ê×¼Êä³ö£¬´´½¨Ò»¸öÎļþ¡£
ÓÒ¼âÀ¨ºÅ»ò³Æ´óÓÚ·ûºÅ (>) °ÑÃüÁîµÄÊä³ö·¢Ë͵½Ò»¸öÎļþÖУºÊ¹Óõ¥¸öÓÒ¼âÀ¨ºÅ£¬µ±Ö¸¶¨ÎļþÃû²»´æÔÚµÄʱºò£¬½«´´½¨Ò»¸öÐÂÎļþ£»Èç¹ûÎļþÃû´æÔÚ£¬Ëü½«±»¸²¸Ç¡£(×¢Ò⣺ÃüÁî¡¢ÖØ¶¨Ïò·ûºÅºÍÎļþÃûÖ®¼äµÄ¿Õ¸ñÊÇ¿ÉÑ¡µÄ) ¡£
¹²·ÖÏí92ƪÏà¹ØÎĵµ