¡iͦW¡jÀ³¥Îµ{¦¡¤G¶i¦ì¤¶±
¡i»¡©ú¡jÀ³¥Îµ{¦¡¤G¶i¦ì¤¶±¬°
SVR4 ©Ò´£¨Ñªº¤@²Õ¤¶±¡A¥¦¬O¥Î¨Ó«P¨Ï¦b¬Û¦P·L³B²z¾÷¤U©Òµo®i¥X¨ÓªºÀ³¥Îµ{¦¡¯à°÷¦b¤G¶i¦ì½X¤W¬Û®e¡C´«¥y¸Ü»¡¡A¦b 80486 ·L³B²z¾÷ªº DOS §@·~¨t²Î¤U©Òµo®i¥Xªºµ{¦¡¡A¥i¥H©M¦b¬Û¦PµwÅéÀô¹Ò¤Uªº UNIX °õ¦æ¡C¡i°Ñ¦Ò¡j
WABI¡C¡iͦW¡jµ´¹ï¸ô®|
¡i»¡©ú¡j
UNIX¨t²ÎªºÀɮ׬O¥Ñ¶¥¼hª¬ªº¾ðª¬µ²ºc©Òºc¦¨ªº¡A©Ò¥H¥Ñ¸ê®Æµ²ºcªº¨¤«×¨Ó¬Ý¡A¥Ø¿ý¬°¤@«D²×ºÝ¸`ÂI¡]nonterminal node¡^¡A¦ÓÀɮ׫h¬O¤@Ӳ׺ݸ`ÂI©ÎºÙ¬°¸¡]leaf¡^¡C¦]¦¹¥Ø¿ýªº¥»¨¥ç¬°¤@ºØ¡u¯S§O¡vªºÀɮסA¨äÀx¦sªº¤º®e¬°¥¦¤§¤UªºÀɮסþ¥Ø¿ýªº¬ÛÃö¸ê°T¡C±q¨Ï¥ÎªÌÆ[ÂI¦Ó¨¥¡A§ÚÌ¥i¥H³z¹L¨âºØ¤è¦¡¨Ó´M§ä©Ò»ÝªºÀɮסC²Ä¤@ºØ¬O¡uµ´¹ï¸ô®|¡vªº¤è¦¡¡A²Ä¤GºØ¬O¡u¬Û¹ï¸ô®|¡vªº¤è¦¡ ¡C©Ò¿×¡uµ´¹ï¸ô®|¡v¬O±qÀɮרt²Îªº®Ú¥Ø¿ý¡]root directory¡^¶}©l¡A¼g¥X¨ì¹F¸Ó¥ØªºÀɮתº§¹¥þ¸ô®|¦WºÙ¡A²Ä¤@Ó¦r¤@©w¬° "/" ¡Aªí¥Ü®Ú¥Ø¿ý¡C¡i½d¨Ò¡j
$cd/user/local/trevor¡i°Ñ¦Ò¡j
root directory, relative path¡C¡iͦW¡j¦s¨ú¼Ò¦¡
¡i»¡©ú¡j¸Ô¨£
access permission ¤@Ãã¡C¡iͦW¡j¦s¨úÅv
¡i»¡©ú¡j¦b
UNIX ¨t²Î¤¤¡]S5 Àɮרt²Î¡^¡A¨CÓÀɮצ³¤@Ó¦û 16 ¦ì¤¸ªºÄæ¦ì¨Óªí¥Ü¸ÓÀɮתº¦s¨úÅv»PÄݩʡA¨ä¤¤¦ì¤¸ 0-8 ¬Oªí¥ÜÃö©óÀɮתº¦s¨úÅv¡A¤À§O¥Nªíªº·N¸q¦p¤U¡G¦ì¤¸ |
876 |
543 |
210 |
rwx ¡ô owner |
rwx ¡ô group |
rwx ¡ô other group |
¦@¦³¤TÓ¤K¶i¦ì¨Ó¥NªíÀÉ®×¾Ö¦³ªÌ¡]
owner¡^¡B¦P¤@¹ÎÅé¡]group¡^¡B¨ä¥¦¹ÎÅé¡]other group¡^¤TÃþ¡C¨C¤@Ãþ¤À§O¦³Åª (r)¡B¼g (w) »P°õ¦æ (x) ¤TºØ¨Ï¥ÎÅv§Q¡CUNIX§Q¥Î³o¤EӦ줸¨M©wÀɮ׳Q¨CÓ¤H¨Ï¥ÎªºÅv§Q¡A¥HºÞ¨î«Dªk¨Ï¥Î¥L¤HªºÀɮסA¦Ó¦¹¦s¨úÅv¬O¥H chmod «ü¥O¨Ó³]©w¡C¡i½d¨Ò¡j¬d¬Ý¦s¨úÅv
$ ls -l total 26 drwxrwxrwx 2 root root 120 July 8 18:00 KEVIN -rwxrwxr-- 1 root root 68 July 8 18:00 temp.c |
|
¡ô ¦s¨úÅv |
¡iͦW¡jµL
¡i»¡©ú¡j¦b¤@Ó¡u»·ºÝÀɮצ@¨É¡v¡]
Remote File Sharing¡^ ªºÀô¹Ò¤§¤U¡A¤¹³\±N·í¦a¥D¾÷¡]host¡^ªº²{¦³¥i¥Î¸ê·½²¾Â൹¨ä¥¦¥D¾÷¨Ï¥Îªº¤@ºØ¤èªk¡C¡i°Ñ¦Ò¡j
remote file sharing¡C¡iͦW¡jµL
¡i»¡©ú¡j³o¬O
UNIX ©Ò´£¨Ñ¥|ºØ°O¿ýÂê©w¥\¯à¤§¤@¡C·í¨Ï¥ÎªÌ¦s¨ú¤w³QÂê©wªº¸ê®Æ®É¡M¨t²Î¶È¶È´£¥Xĵ§i¡M¨Ã¤£¸T¤î¨Ï¥ÎªÌ¥h¦s¨ú³QÂê©wªº¸ê®Æ¡C³oºØÂê©w¤è¦¡¶È¾A¦X¼ÆÓ³B²zµ{§Ç¦b¨ó¦P§@·~¡]Cooperative operation¡^®É±Ä¥Î¡C¡i°Ñ¦Ò¡jCooperative process¡C
¡iͦW¡jÄU¿ÏÂê¡B«ØÄ³Âê
¡i»¡©ú¡j´NÂê©wªºªº¤è¦¡¨Ó»¡¡A¥i¥H¤À¬°Åª¨úÂê©w¡]
read locking¡A¥çºÙ¬°¤À¨ÉÂê©w¡Ashare locking¡^¥H¤Î¼g¤J¡]write locking¡A¤]ºÙ§@±Æ¥~Âê©w¡Aexclusive locking¡^¡C·í¤@ÓÀɮשΰO¿ý¥HŪ¨úÂê©wªº¤è¦¡Âê¦í®É¡A¨ä¥Lªº³B²zµ{§Ç¶È¯à¹ï³QÂê©wªºÀɮס]©Î°O¿ý¡^¶i¦æÅª¨ú§@·~¡F¦b¸ÓÂê©w¥¼³Q¸Ñ°£«e¡A©Ò¦³ªº§ó·s¤Î·s¼W§@·~³£±N³Q©Úµ´¡C
·í¤@ÓÀɮשΰO¿ý¥H¼g¤JÂê©wªº¤è¦¡¤WÂê®É¡A©Ò¦³ªº³B²zµ{§Ç³£¤£¤¹³\¹ï¸ÓÀÉ¡]©Î°O¿ý¡^±q¨Æ¥ô¦ó§Î¦¡ªºÅª¼g§@·~¡Aª½¨ìÂê©w³Q¸Ñ°£¡C
Y¬O¥HÂê©wªººØÃþ¨Ó¬Ý¡A¤S¥i¤À¬°±j¨îÂê¡]
mandatory locking¡^»PÄU¿ÏÂê¡]advisory locking¡^¡C±j¨îÂê»P¿é¥X¿é¤J¦¸¨t²Îµ²¦X¡A·í¤@ÓÀɮשΰO¿ý¥H±j¨îªº¤è¦¡¤WÂê®É¡A©Ò¦³¹HIÂê©w¤è¦¡ªºÅª¼g§@·~³£·|³Q®Ö¤ß¥D°ÊÀÁ¸mª½¨ìÂê©w¸Ñ°£¡C¥Ñ©ó¤WÂê»P¸ÑÂꪺ°Ê§@³£¤£¶·¸g¥Ñ³B²zµ{§Ç¥s¥Î fcntl() ©Î lockf() ªºµ{§Ç¡A©Ò¥H¤SºÙ¬°·tÂê¡]implicit locking¡^¡CÄU¿ÏÂꥼ´¿»P¿é¥X¿é¤J¦¸¨t²Îµ²¦X¡A¦]¦¹¨t²Î¥²¶·¦Û¦æ³B²z¤WÂê»P¸ÑÂꪺ°Ê§@¡A¦Ó³o¨Ç¦æ¬°³£±o¸g¹L±`¦¡
fcntl() ©Î lockf()¡A¦]¦¹ºÙ¬°©úÂê¡]explicit locking¡^¡C¥Ñ©ó
UNIX ¬O¤@Ó¦h¤H¦h¤uªº§@·~¨t²Î¡A¤@¤Áªº¸ê·½³£¬O¥Ñ²³¦h³B²zµ{§Ç©Ò¦@¨É¡A¦]¦¹±zYn¿W¦û¬YӸ귽¤@¬q®É¶¡®É¡A±z¥²¶·¥ýÀò±o¨t²Îªº¦P·N¡A¨ú±o¨t²Î¦P·Nªºµ{§Ç«K¬O¥Ó½Ð¤@ÓÂê©w¡]lock¡A³oùا@¦Wµü¸Ñ¡^¡A¦ÓÂê©w¦³¨âÃþ¡A¤@Ãþ¬O±z¥Ó½Ð¨ì«á¡A¥u¦³±z¥i¥HŪ¼g¸ÓÀÉ¡A³o´N¬O©Ò¿×ªº¼g¤JÂê©w¡C¥t¤@Ãþ¬O±z¥Ó½Ð¨ì«á¡A§Oªº³B²zµ{§Ç¶È¥iŪ¨ú¸ÓÀɦý¤£¥i¥H¼g¤J¡A³o«K¬OŪ¨úÂê©w¡C¥Ó½ÐÂê©wªºn¨D¥¼¥²·|¦¨¥\¡A³o¬O¥Ñ©ó¸ÓÀɮתºÂê©w¤w³Q§Oªº³B²zµ{§Ç®³¨«¡A³o®É±z´N¥²¶·µ¥«Ý¡Aª½¨ì¯à°÷®³¨ìÂê©w¡C¨Ò¦p¹ïÀɮתº¼g¤JÂê©w¤@¦¸¥u¯àµ¹¤@Ó³B²zµ{§Ç¡]Âê©wªº¥Øªº´N¬O¨¾¤î¦hÓ³B²zµ{§Ç¦P®É¹ï¤@ÓÀÉ®×¼g¤J¡^¡A¦ÓŪ¨úÂê©w´N¥i¥Hµ¹¦hÓ³B²zµ{§Ç¡C¦Ü©ó±j¨îÂê¤ÎÄU¿ÏÂê«h¬O«ü¤WÂꪺ¤è¦¡¡A¬O³z¹L³B²zµ{§Ç¹ï¯S©w±`¦¡ªº¥s¥Î¨Ó¥[ÂêÁÙ¬O¥Ñ¨t²Î¥»¨¹ï©Ò«ü©w¸ê·½§@±j¨î©Êªº¤WÂê¡F¤U¹Ï¬°¨âºØÂê©w«¬ºA¹ïÀɮס]©Î°O¿ý¡^Ū¨úº[¼g¤J§@·~ªººÞ¨î±¡§Î¡CÂê©w¤è¦¡¡G
Ū¨úÂê©w |
¼g¤JÂê©w |
|
¥ØªºÀɮסþ°O¿ý¥¼³Q¥ô¦ó³B²zµ{§ÇÂê©w | ¦¨¥\ |
¦¨¥\ |
¤w¦³³B²zµ{§Ç¨ú±o¥ØªºÀɮסþ°O¿ýªºÅª¨úÂê©w | ¦¨¥\ |
©Úµ´ |
¦³³B²zµ{§Ç¨ú±o¥ØªºÀɮסþ°O¿ýªº¼g¤JÂê©w | ©Úµ´ |
©Úµ´ |
ŪªÌ½Ðª`·N¡An¨ú±o¤@ÓÀɮתºÅª¨úÂê©w«h³B²zµ{§Ç¥²¶·¦³¹ï¸ÓÀɪºÅª¨úÅv¡]
read permission¡^¡F¦P²z¡A¥u¦³¦b³B²zµ{§Ç¹ïÀɮצ³¼g¤JÅv¡]write permission¡^®É¡A¥¦¤~¯àÀò¨ú¸ÓÀɪº¼g¤JÂê©w¡C¦b
SVR4 ¥H«e¡A©Ò¦³ªº UNIX ¨t²Î¥u¦³´£¨ÑÄU¿ÏÂê¡AÄUÁåÂꪺ°ÝÃD¬O¨S¦³±j¨î©Ê¡A³o¦n¹³¥j®Éªº©¾¦Ú¹ï§g¤ý¥u¯àW¤f±C¤ßªº³WÄU¡A«oµL±j¨î§g¤ý¿í´`ªº¤O¶q¡C¤@¤Á¥HÄU¿Ï«¬ºA«Ø¥ßªºÂê©w¡A³£¥²¶·¸g¥Ñ fcntl() ©Î lockf() ±`¦¡¡A¬GºÙ©úÂê¦pªG§Ṳ́µ¤Ñµo®i¤@Ó¸ê®Æ®wºÞ²z¨t²Î¡]DBMS §Y Data Base Management System¡^¡A©Ò¦³¦s¨ú¸ê®Æ®wªºªº§@·~³£¥²¶·¸g¥Ñ¤@²Õ¯S©wªº¨ç¦¡¨Ó§¹¦¨¡A³o®É¸Ó²Õ¨ç¦¡´N¥i¥H¨Ï¥ÎÄU¿ÏÂê¡C½Ðª`·N¡A³oùتº¥ý¨M±ø¥ó¬O¡y©Ò¦³ªº¦s¨ú§@·~³£¥²¶·¸g¥Ñ¤@²Õ¯S©wªº¨ç¦¡¨Ó§¹¦¨¡z¡C¸U¤@¦³Ó³B²zµ{§Ç¥¦¾Ö¦³¹ï¸ê®Æ®w¨t²Î¤¤¡C¦UÀɮתº¦s¨úÅv¡A¦Ó¥¦¤£¸g¥Ñ¤Wzªº¨º²Õ¨ç¦¡¨Ó¦s¨ú¸ê®Æ®w¨t²Î¡A¦¹®ÉÄU¿ÏÂê´NµL¯à¬°¤O¤F¡CUNIX ¨t²Î±N³B²zµ{§Ç¦s¨úÀɮתºÅv¡A§¹¥þ¥æ¥ÑÀɮצs¨úÅv¦ì¤¸¨ÓºÞ¨î¡F¥¦¥u¬O®ø·¥¥B³Q°Êªº¨Ó³B²z¸ê·½¦P¨B¦s¨ú¡]synchronous access¡^ªº°ÝÃD¡A¦]¦¹«Ø¥ßÂê©w¡B¨ú±oÂê©w¡B¬dÅçÂê©w¤D¦ÜºM®øÂê©w³£¶·¥Ñµ{¦¡¦Û¦æ¥s¥Î fcntl() ©Î lockf() ±`¦¡¨Ó§¹¦¨¡C
¡i°Ñ¦Ò¡jMandatory locking¡C
¡iͦW¡j¹L®É½w½Ä°Ï¦ê¦C
¡i»¡©ú¡j¦b½w½Ä°ÏªººÞ²z¤è¦¡¤¤¡A¦¹¦ê¦C¦s¦b§@¥Î¬O¢w¥¦§â¤w¸g¥Î¹L¦Ó¥B¥i¯à¤£·|¦A¥Î¨ìªº¸ê®Æ½w½Ä°Ï©ñ¤J¦¹¦ê¦C¤¤¡C·í¨t²Îªº½w½Ä°Ï¤£¼Å¨Ï¥Î¡A»Ýn·sªº½w½Ä°Ï®É¡A¥i¥Hª½±µ±q¦¹¦ê¦C¤¤ªº²Ä¤@Ó¶}©l¨ú¥Î¡C¨Ï¥Î¹L®É½w½Ä°Ïªº¥t¤@Ó¦n³B¬O¢w¸U¤@¬YÓ¸ê®Æ½w½Ä°Ï¦³¦A¦¸¨Ï¥Îªº¾÷·|®É¡A¦Ó¥B¸Ó½w½Ä°Ï¤]ÁÙ¦s¦bªº¸Ü¡A¨t²Î´N¥i¥H¦A¦¸ª½±µ¨ú¥Î¥¦¡C
¡iͦW¡j§O¦W¡B¤Æ¦W
¡i»¡©ú¡j¦b C shell »P Korn shell ¤U´£¨Ñ¦¹¶µ¥\¯à¡C¥¦¤¹³\¨Ï¥ÎªÌ¥Î¤@Ó¦Û©wªº¦WºÙ¨Ó´À¥N즳ªº©R¥O¦WºÙ¡A¦b°õ¦æ®É¥Ñ shell¨Ót³d³o¤¤¶¡ªºÂà´«¤u§@¡C¦P®Éì©lªº©R¥O¦WºÙ¤´¥iÄ~Äò¨Ï¥Î¡C
¡i½d¨Ò¡j | $alias rm="rm -i" $alias h=history $alias v=vi |
¡i°Ñ¦Ò¡jAT&T, shell, C shell, Korn shell¡C
¡iͦW¡j°±ªy¤Ç°t
¡i»¡©ú¡j§Y¬O«ü¦b¤@Ó¤å¦rÀɤ¤¡A¨C¤@¦Cªº¬YÓ©T©w¦ì¸m§ä´M¤@¯S©w¦r¼Ë¡]pattern¡^¡C
¡i½d¨Ò¡j | $grep "^unix system" <´M§ä¥H "unix system" ¬°¶}ÀYªº¦U¦C $grep "^unix system$" <´M§ä¥H "unix system" ¬°µ²§Àªº¦U¦C $grep "^unix system$" <´M§ä¤@¦C¤¤¶È¦³¥H "unix system" ¬°¦r¼Ë¦ÓµL¨ä¥¦¦r¼Ëªº¦U¦C |
ANSI (American National standard Institute)
¡iͦW¡j¬ü°ê°ê®a¼Ð·Ç¨ó·|
¡i»¡©ú¡j¬°¤@«DÀç§Q©Ê²Õ´¡A¨ä¥\¯à¬°¨ó½Õ¼t°Ó¡B¨î©w©¼¦¹¶¡¦@³qªº¤u·~¼Ð·Ç¡C
AOE (Application Operation Environment)
¡iͦW¡j³nÅéÀ³¥Î¾Þ§@Àô¹Ò
¡i»¡©ú¡j¥Ñ©ó
UNIX ¹ï©ó¤@¯ë¨Ï¥ÎªÌ¦Ó¨¥¡A¯Ê¥F¾Þ§@¤Wªº¿Ë©M¤O¡A¹E¦³AOE¡]Application Operating Environment¡^ªººc·Q²£¥Í¡A¥H§ïµ½¨Ï¥ÎªÌ¤¶±¡A¤Î¨ó§U¨Ï¥ÎªÌµo®iÀ³¥Î³nÅé....µ¥µ¥¡AÅý¤H¾÷¶¡¯à¦³§ó¦nªº·¾³q¡C¾ãÓ¾Þ§@Àô¹Ò¥i¤À¬°¥|¤j³¡¥÷¡A¦p¤U¹Ï©Ò¥Ü¡G
1. µo®i¤u¨ã¡C
2. ¸ê®ÆºÞ²z¥\¯à¡C
3. ºô¸ô¨t²Î¤ä´©¡C
4. ¨Ï¥ÎªÌ¬É±¡C
¡iͦW¡j«O¦sÀÉ
¡i»¡©ú¡j±N¦n´XÓÀɮשһݪº¸ê®Æ²Õ¦X¦¨¤@Ó¶°¦X¡A¦ÓºÙ¦¹¶°¦X¬°
archive ÀɩάO archive µ{¦¡®w¡C¦Óºc¦¨ archive ªº¨C¤@ÓÀɮ׫hºÙ¬°¦¹
archive ªº¦¨û¡]member¡^¡CARP (Address Resolution Protocol)
¡iͦW¡j¦a§}¹ïÀ³³q°T¨ó©w
¡i»¡©ú¡j
ARP¡]Address Resolution Protocol¡^¬O¤@ºØ³q°T¨ó©w¡A¯à°÷¥H°ÊºAªº¤è¦¡±N¬Y¤@Óºô¸ô¤Wªº¦ì§}¹ïÀ³¨ì¥t¤@Ó¤£¦Pºô¸ôªº¦ì§}¤W¡CÁ|¨Ò¨Ó»¡¡G¦b BSD 4.3 ª©¤¤¡A ARP ¬O±N DARPA Internet ºô¸ôªº¦ì¤î¹ïÀ³¨ì Ethernet ºô¸ôªº¦ì¤î¤W¡C¦b©Ò¦³ªº UNIX ¨t²Î¤¤³£¦³¤@Ó ARP ªí¡A°O¿ý¤F¨C¤@Ó©Òª¾¹D¾÷¾¹ªº¡uIP ¦a§}¡v¤Î¨ä©Ò¥Nªíªº¡uETHERNET ¦a§}¡v¡A©Ò¥H¤@Ó IP ¦a§}¥u·|¹ïÀ³¤@Ó ¤A¤Óºô¸ô¦a§}¡A¦pªG¦³¤H¥Î¬Û¦Pªº IP ¡A¨ä¤A¤Óºô¸ô¡] EtherNet¡^ ¦a§}·|©M ARP ªí¤¤ªº¤º®e¬Û²Å¡A¦]¦¹¨t²Î°e¥Xªº«Ê¥]¡] package¡^ ¯à«OÃÒ°e¨ì¯u¥¿ªº¦a¤è¡A¦ý¦pªGºô¸ô¤W¦³¥ô¦ó¤@¥x¾÷¾¹§ó´« ¤A¤Óºô¸ôºô¸ô¥d®É¡A¥²¶·¨ì©Ò¦³¾÷¾¹¤W¥h§ó§ï ARP ªí¤ºªº¸ê®Æ¡C¡iªþµù¡j
DARPA¡]Defense Advanced Research Projects Agency¡^°ª¯Å°ê¨¾¬ã¨s±M®×§½¬O¬ü°ê°ê¨¾³¡¤ºªº¤@Ó³æ¦ì¡C¡iͦW¡j¬ü°ê°ê®a¼Ð·Ç¥æ´«½X
(American Standard Code for Information Interchange)¡i»¡©ú¡j
ASCII ¬O¬ü°ê°ê®a¼Ð·Ç¥æ´«½X¡]American Standard Code for Information Interchange ¡^ªºÁY¼g¡C¥¦¬O¥Ñ¬ü°ê°ê®a¼Ð·Ç¨ó·|¡]ANSI¡^©Ò¨î©w¡M¥H§@¬°¹q¸£¤º³¡»Pºô¸ô¶Ç¿éªº¼Ð·Ç½X¡CANSCII ¥H¤@Ó byte ¥Nªí¤@Ó¦r¤¸¡A¨ä¤¤¥]¬A¤j¡B¤p¼gªº^¤å¦r¥À¡Bªü©Ô§B¼Æ¦r¥H¤Î¤@¨Ç¯S®í²Å¸¹¡A¦@¦³ 128 Ó¡C¡i°Ñ¦Ò¡j
ANSI¡C Asynchronous I/O¡iͦW¡j«D¦P¨B¡]²§¨B¡^¿é¤J¡þ¿é¥X
·í¤@Ó³B²zµ{§Ç¤´µM¦b§@·~®É¡A¯à°÷¹ï¿é¤J¡þ¿é¥X¦¸¨t²Î´£¥X¿é¤J¡þ¿é¥Xªº½Ð¨D¡C·í§@·~§¹¦¨©Î¬Oµo¥Í¥ô¦ó¿ù»~ªº®ÉÔ¡A¨t²Î³q±`¤]¬O·|¥H«D¦P¨Bªº¤è¦¡µo¥X³qª¾¡C
¡iͦW¡j«D¦P¨B¼g¤J¡A²§¨B¼g¤J
¡i»¡©ú¡j«D¦P¨B¼g¤J»P¦P¨B¼g¤J§@·~ªº¤è¦¡«ê«ê¬Û¤Ï¡A¦P¨B¼g¤J¬O¡y»¡¼g´N¼g¡Aµ´¤£µ¥«Ý¡z¡A¦b¶i¦æ¿é¥X¿é¤J®É¡A¥s¥Î¿é¥X¿é¤J±`¦¡ªº³B²zµ{§Ç¡]
calling process¡^´N¼È®É¶i¤JºÎ¯vª¬ºAª½¨ì¾ãÓ¿é¥X¿é¤Jªº°Ê§@§¹²¦¡C¦Ó«D¦P¨B¼g¤J«h¬O¦b¶i¦æ¿é¥X¿é¤J®É¡A¥s¥Îªº³B²zµ{§ÇÁöµM¥ß§Y°õ¦æ¿é¥X¿é¤J¤§°Ê§@¡A¦ý¬O¥¦¤£«Ý¿é¥X¿é¤J°Ê§@§¹¦¨´N®|¦æ°õ¦æ¨ä¥Lªº¤u§@¡C¡iͦW¡jµL
¡i»¡©ú¡j
UNIX ¦b SVR3.0 ¥H«áªºª©¥»¦b¨t²Î©I¥s¤W©Ò°µªº¤@¶µ«nªº§ï¶i´N¬OÅý©Ò¦³ªº¨t²Î©I¥s¬Ò¬° "atomic operation"¡C©Ò¿×ªº "atomic operation" ¬O«ü¤@Ó¦h¨BÆJ¡]multiple steps¡^ªº¨t²Î©I¥s¦b°õ¦æ®É¡An´N¬O¤@¦¸°µ§¹©Ò¦³ªº¨BÆJ¡An¤£µM´N¬O¥þ³¡¤£°µ¡C§ÚÌ¥H SVR2.x ®É´Áªº open() ©M creat() ¨t²Î©I¥s¬°¨Ò¡A·í®É open() »P creat() ¬O³o»ò¥Î¡G#define MODE 0666
...........
int fd;
char fname[_POSIX_PATH_MAX+1];
...........
...........
if((fd=open(fname,WR_ONLY)) == -1)
if(errno == ENOENT)
{
if((fd=creat(fname,MODE)) == -1)
perror("creat ");
}
else
perror("open ");
¤Wzªº§@·~¤è¦¡±N«Ø¥ß·sÀɪº§@·~¤Á¦¨¨âÓ¶¥¬q¡G
²Ê¬Ý¤§¤U¡A¤Wzªº§@·~¤è¦¡¨ÃµL¥iij¤§³B¡A¦ý¬O¥J²Ó±ÀºV±z·|µo²{¨âÓ¨t²Î©I¥s¶¡¦³¥i¯à²£¥Í¶¡»Ø¡C¤ñ¤è»¡³B²zµ{§Ç¢Ï°õ¦æ¦æ¤W±ªº°Ê§@¡A¦b¥¦°õ¦æ§¹
open() «á¡]time slice¡^²×¤F¡A©ó¬O³B²zµ{§Ç¢Ð°õ¦æ¡A³B²zµ{§Ç¢Ð«Ø¥ß¤F fname ÀÉ¥B¼g¤J¸ê®Æ¡AµM«á¥¦ªº®É¶¡°tÃB¤]²×¤F¡A¦A´«³B²zµ{§Ç¢Ï°õ¦æ¡A³o®É³B²zµ{§Ç¢Ï·|®|¦æ¥s¥Î creat()¡Aµ²ªG쥻³B²zµ{§Ç¢Ð©Ò¿é¤Jªº¸ê®Æ±N¥þ½L³à¥¢¡C¸Ñ¨M¦¹¤@°ÝÃDªº¿ìªk«K¬OÅýÀˬdÀɮ׬O§_¦s¦b¤Î«ØÀɪº°Ê§@¤@¦¸§¹¦¨¡A¤¤¶¡¨S¦³¶¡»Ø¡C¦]¦¹ SVR3.x ª©¥H°ªº open() ±`¦¡¥[¤J¤F O_CREAT ºX¼Ð¡A¨Ï©Ò¦³°Ê§@¤@®ð¨þ¦¨¡C¤W±ªºµ{¦¡¥H·sª©ªº open() ¨Ó¼g±N¦p¤U¡Gif((fd=open(fname,O_WRONLY|O_CREAT|O_EXCL,MODE)) == -1)
perror("open ");
¡iͦW¡j¬ü°ê¹q¸Ü¹q³ø¤½¥q
¡i½d¨Ò¡j
AT&T ¬O¬ü°ê³Ì¤jªº¹q«H¤½¥q¡M¦b 1984 ¦~©|¥¼³Q¥H¤Ï¦«©Ô´µªk±j¢¸ÑÅ餧«e¡A¥¦¬O¥@¬É¤W³Ì¤jªº¹q«H¤½¥q¡M¨äÀç¹B½d²[»\¤F¬ü°ê¤@¥b¥H¤Wªº»â¤g¡M»P¦Ê¤À¤§¤K¤Qªº¬ü°ê¥Î¤á¡C¦Ó¨äºX¤Uªº¼ÆÓ¬ã¨s³æ¦ì¦b°ê»Ú¤W¤]»át²±¦W¡M³Ì¦³°^Ämªºº±À¨©º¸¹êÅç«Ç¡]BELL LAB¡^¡M¦Ó UNIX¤]´N¬O¥Ñ¥¦©Òµo®i¥X¨Óªº¡C¦]¦¹¡A AT&T ª©ªº UNIX «üªº¤]´N¬O¥Ñ¨©º¸¹êÅç«Ç©Òµo®iªº UNIX¡C¥Ø«e³Ì·sªº AT&T ª© UNIX ¬° SVR4.2¡] System V Release 4.2¡^¡C¡iͦW¡j¦Û°Ê¬[ºc¶¥¬q
¡i»¡©ú¡j
UNIX ¨t²Î¦b°_°Êªº¹Lµ{¤¤¡A¥²¶·¸g¹L³\¦hªº¨BÆJ»P¶¥¬q¡C¦b¦¹¶¥¬q¤¤¡A¨t²Î·|°»´ú¥X©Ò¦³¥i¯à»P¥D¾÷¬Û³s±µªºµwÅé©PÃä³]³Æ¡A¨Ã¥B©I¥s¬Û¹ïÀ³ªº³]³Æ±`¦¡¨Ó«Ø¥ß³o¨Ç³]³Æ©Ò»Ýªº³nÅéÀô¹Ò¡A¥H«K¥i¥H¶¶§Q¤W½u¡A¨Ñ¥Î¤á¨Ï¥Î¡C