<title>Unix overview CHAP05</title>


     5

              



     ᫥  ᬠਢ ७    䠩-
  ⥬   ࠡ  .  ⮩     ⥬
㭪  ࠡ  䠩 ⥬  ᯮ짮 ⨩,  
  ।饩 . ᬠਢ ⥬ 㭪樨, ᯥ稢騥 -
饭  騬 䠩, ⠪  open, read, write, lseek  close, -
⥬ 㭪樨 ᮧ  䠩,  , creat  mknod, , , -
樨  ࠡ  ᮬ   ।  䠩 ⥬:  chdir,
chroot,  chown,  stat   fstat. ᫥  ᫮ ⥬ 㭪樨:
pipe  dup   祭  ॠ樨   shell';  mount  
umount        짮⥫ ॢ 䠩 ⥬; link 
unlink    䠩 ⥬. ⥬  ।-
⠢  ࠪ, 易  䠩 ⥬,  ⭮襭 -
 ࠧ 䠩 ⥬, 稭 ⠭ 䥩ᠬ.  -
 ࠧ      ᮯ஢  䠩  ⥬.  
   ६ ࠬ  : ⠡楩 䠩,  ன 
 易      ⥬ 䠩, ⠡楩  짮⥫-
᪨  ਯ஢  䠩,  ன   易  䠩 -
ਯ஬,  ,  ⠡楩 ஢,  ன  ᮤন
ଠ   ⨢ 䠩 ⥬.

             㭪樨  ࠡ  䠩 ⥬
+----------------------------------------------------------------+
+------+--------------+--------+-------+-------+---------+-------+
| - | ᯮ   | - | - | - | - | ࠢ-|
| - |      |    |   | 뢮 |     |  |
|  | namei        | - |  - |     | -| -   |
| -|              |      | ਡ- | 䠩 | ன 䠩-| ॢ- |
| ਯ- |              |        | ⠬  |       |    | ﬨ   |
|  |              |        | 䠩 |       | ⥬  |       |
| 䠩|              |        |       |       |         |       |
+------+--------------+--------+-------+-------+---------+-------+
| open | open   stat  |        |       |       |         |       |
| creat| creat  link  | creat  | chown | read  |         |       |
| dup  | chdir  unlink| mknod  | chmod | write | mount   | chdir |
| pipe | chroot mknod | link   | stat  | lseek | umount  | chown |
| close| chown  mount | unlink |       |       |         |       |
|      | chmod  umount|        |       |       |         |       |
+------+--------------+--------+-------+-------+---------+-------+
+---+--+--------------+--------+-------+-------+---------+----+--+
    |   ࠡ  䠩 ⥬   ஢  |
    +-------------+------------------+------------------------+
    |    namei    |                  |                        |
    +-------------+ ialloc    ifree  |   alloc   free   bmap  |
    | iget   iput |                  |                        |
    +-------------+------------------+------------------------+
    +---------------------------------------------------------+
    |              ࠡ  ࠬ                 |
    +---------------------------------------------------------+
    |    getblk     brelse     bread     breada     bwrite    |
    +---------------------------------------------------------+

    㭮 5.1.  㭪樨  ࠡ   䠩  ⥬    
                    㣨 ⬠

                                     85

      㭪  5.1    ⥬묨 㭪ﬨ  -
⬠, ᠭ묨 ࠭. ⥬ 㭪樨     ᪮쪮
⥣਩,    㭪権  , 祬   ⥣-
ਨ:

  *  ⥬  㭪樨,  騥  ਯ 䠩  ᯮ짮
    㣨 ⥬묨 㭪ﬨ;
  * ⥬ 㭪樨, ᯮ騥  namei       
    ᪠;
  *  ⥬  㭪樨, 騥  ᢮騥   ᯮ짮
    ⬮ ialloc  ifree;
  * ⥬ 㭪樨, ⠭騥  騥 ਡ 䠩;
  * ⥬ 㭪樨, 騥  ந -뢮   
    ᯮ짮 ⬮ alloc, free  ⬮ 뤥 ;
  * ⥬ 㭪樨, 騥  䠩 ⥬;
  * ⥬ 㭪樨, 騥   ᮡ⢥ ।⠢-
       ॢ 䠩 ⥬.


        5.1 OPEN

    맮  ⥬  㭪樨  open ( 䠩) -   蠣, 
 ᤥ , ⮡     䠩. ⠪  맮
㭪樨 open:

    fd = open(pathname,flags,modes);

 pathname -  䠩, flags 㪠뢠 ०  (ਬ,  -
   ),  modes ᮤন ࠢ 㯠  䠩  砥, ᫨ 䠩
ᮧ. ⥬ 㭪 open  頥  楫  ᫮  (*),  㥬
짮⥫᪨  ਯ஬ 䠩. 㣨 樨  䠩, ⠪ 
⥭, , -
樮஢  ⥭-, ந ਯ 䠩, -
⠭ ࠬ஢ -뢮, ।  䠩  ⨥ 䠩,
ᯮ 祭 ਯ 䠩, 頥 ⥬ 㭪樥 open.
     ᬠਢ 䠩 ⥬  ᪠ 䠩     ,  -
    namei  (. 㭮 5.2).  ஢ ࠢ  ⨥
䠩 ᫥ ⮣,  㦨   䠩  ,  뤥 -
뢠 䠩   ⠡ 䠩.    ⠡  䠩  ᮤন
㪠⥫      ⮣ 䠩  ,  ஬ ࠭ ᬥ饭 
  砫 䠩  , 㤠 ।  稭  믮
᫥  権 ⥭  .  뢠  ᬥ饭  0 
६  䠩,   ,  室  ⥭    
  㬮砭  㤥 ந  砫 䠩.  㣮 ஭, 
  䠩  ०   ,  ⮬ 砥  ⠭
祭 ᬥ饭, ࠢ ࠧ 䠩.  뤥   筮 (-
⮩) ⠡  ᭮ ࠭⢥ , 뤥   (⠡
  뢠 ⠡楩 짮⥫᪨ ਯ஢ 䠩),  
㪠⥫   . ⥫ 㯠 ਯ 䠩, 頥
짮⥫.   ⠡ 짮⥫᪨ 䠩 㪠뢠   
쭮 ⠡ 䠩.


---------------------------------------
(*)  ⥬ 㭪樨   砥 㤠筮 襭   -1.
      ,  ࠢ  -1,   㤥 㯮  ᬮ७
    ᨭ⠪ 맮 ⥬ 㭪権.



                                     86

    +------------------------------------------------------------+
    |  open                                              |
    | 室 ଠ:   䠩                             |
    |                      ०                         |
    |                      ࠢ 㯠 ( ᮧ 䠩)    |
    | 室 ଠ: ਯ 䠩                      |
    | {                                                          |
    |    ॢ  䠩  䨪  (  |
    |     namei);                                                |
    |    ᫨ (䠩       ࠧ襭 ) |
    |          ( 訡);                           |
    |    뤥     ⠡ 䠩, 樠- |
    |     ஢ 稪, ᬥ饭;                            |
    |    뤥   ⠡ 짮⥫᪨ ਯ஢ |
    |     䠩, ⠭ 㪠⥫    ⠡ 䠩;|
    |    ᫨ (०  ࠧ㬥 祭 䠩)      |
    |         ᢮   䠩 ( free);        |
    |     ஢ ( );  /*  ஢   |
    |                                      ,  ⬥     |
    |                                      namei */              |
    |     (짮⥫᪨ ਯ 䠩);         |
    | }                                                          |
    +------------------------------------------------------------+

               㭮 5.2.   䠩


    ।,  , 뢠 䠩 "/etc/passwd" ,    ࠧ
⮫쪮    ⥭   ࠧ ⮫쪮  ,   䠩 "local" 
⥭    (**), 믮 ᫥騩  ஢:

    fd1 = open("/etc/passwd",O_RDONLY);
    fd2 = open("local",O_RDWR);
    fd3 = open("/etc/passwd",O_WRONLY);

     㭪 5.3     ⠡楩  ᮢ,  ⠡楩
䠩   ⠡楩 짮⥫᪨ ਯ஢ 䠩.  맮 㭪樨
open 頥  ਯ 䠩,  ᮮ⢥   ⠡-
 짮⥫᪨ ਯ஢ 䠩 㪠뢠  㭨   ⠡-
 䠩 ,       䠩 ("/etc/passwd")  뢠
.
     ⠡ 䠩   ஢   ⮣    ⮣
䠩 㪠뢠     ⠡ ᮢ, ࠭  . -
    䠩 "/etc/passwd"  ⥭  ,  ⮫쪮
१ ਯ 䠩, 騥 祭 3  5 (. 㭮). -
 ࠧ襭  ⥭    䠩  ப ⠡ 䠩,뤥
  ६ 믮 㭪樨 open. ।,  ன  믮
᫥騩  ஢:


---------------------------------------
(**)  ᠭ 맮 ⥬ 㭪樨 open ᮤঠ  ࠬ (-
     ⨩ ᯮ  ⨨  ० ᮧ),  ணࠬ -
      ᯮ ⮫쪮    .   몠   ஢-
      ࠢ쭮 ⢠ ࠬ஢.  ⥬   ࠬ
      ⨩ (  "஬",    ந諮    ⥪)  ।
     筮  .   ஢ 稥 쥣 ࠬ, ᫨ ⮫쪮
     室    ⥪  祭 ண ࠬ,  -
      ணࠬ⠬ 㪠 ⮫쪮  ࠬ.

                                     87

    ⠡ 짮-
    ⥫᪨ ਯ-
       ஢ 䠩        ⠡ 䠩        ⠡ ᮢ
       +---------+        +------------+        +--------------+
      0|         |        |            |        |       -      |
       +---------+        |            |        |       -      |
      1|         |        |            |        |       -      |
       +---------+        +------------+        |       -      |
      2|         |        |      -     |        |       -      |
       +---------+        |      -     |        |       -      |
      3|     ----+----+   |      -     |        |       -      |
       +---------+    |   |      -     |        +--------------+
      4|     ----+---+|   |      -     |  +---->| -        |
       +---------+   ||   |      -     |  |+--->| 稪  (/etc/  |
      5|     ----+--+||   +------------+  ||    |  2    passwd)|
       +---------+  |||   | -      |  ||    +--------------+
      6|         |  ||+-->| 稪  ⥭+--+|    |       -      |
       +---------+  ||    |  1         |   |    |       -      |
      7|         |  ||    +------------+   |    |       -      |
       +---------+  ||    |      -     |   |    |       -      |
       |    -    |  ||    |      -     |   |    |       -      |
       +---------+  ||    +------------+   |    |       -      |
                    ||    | -  -|   |    |       -      |
                    |+--->| 稪    -+---|-+  |       -      |
                    |     |  1   |   | |  |       -      |
                    |     +------------+   | |  |       -      |
                    |     |      -     |   | |  +--------------+
                    |     |      -     |   | |  | -        |
                    |     |      -     |   | +->| 稪   (local)|
                    |     |      -     |   |    |  1           |
                    |     |      -     |   |    +--------------+
                    |     +------------+   |    |       -      |
                    |     | -      |   |    |       -      |
                    +---->| 稪  +---+    |       -      |
                          |  1         |        |       -      |
                          +------------+        |       -      |
                          |      -     |        |       -      |
                          |      -     |        |       -      |
                          +------------+        +--------------+


            㭮 5.3.   ᫥ 


    fd1 = open("/etc/passwd",O_RDONLY);
    fd2 = open("private",O_RDONLY);

 㭪 5.4    ᮮ⢥騬 ࠬ  -
,    (  )   䠩.  १-
⮬   맮 㭪樨 open  뤥 㭨쭮 窨 室
 ⠡ 짮⥫᪨ ਯ஢ 䠩   ⠡ 䠩 ,  -
 ࠭       䠩  ⠡ ᮢ, ࠧ饭-
  .
      ⠡ 짮⥫᪨ ਯ஢ 䠩  㬮砭 ࠭
ᬥ饭  䠩   ᫥饩 樨 뢮  㪠뢠 -
।⢥   室  ⠡ ᮢ  䠩,  ࠭  室-
    ⤥쭮  ⠡ 䠩 . 襯ਢ ਬ 뢠
  ﬨ ⠡ 짮⥫᪨ ਯ஢ 䠩  -


                                     88

    ⠡ 짮-
    ⥫᪨ ਯ-
       ஢ 䠩
       ( A)        ⠡ 䠩        ⠡ ᮢ
       +---------+        +------------+        +--------------+
      0|         |        |            |        |       -      |
       +---------+        |            |        |       -      |
      1|         |        |            |        |       -      |
       +---------+        +------------+        |       -      |
      2|         |        |      -     |        |       -      |
       +---------+        |      -     |        |       -      |
      3|     ----+----+   |      -     |        |       -      |
       +---------+    |   |      -     |        +--------------+
      4|     ----+---+|   |      -     |  +---->| -        |
       +---------+   ||   |      -     |  |+--->| 稪  (/etc/  |
      5|     ----+--+||   +------------+  ||+-->|  3    passwd)|
       +---------+  |||   | -      |  |||   +--------------+
       |    -    |  ||+-->| 稪  ⥭+--+||   |       -      |
       |    -    |  ||    |  1         |   ||   |       -      |
       |    -    |  ||    +------------+   ||   |       -      |
       +---------+  ||    |      -     |   ||   |       -      |
                    ||    |      -     |   ||   |       -      |
       ( B)  ||    |      -     |   ||   |       -      |
       +---------+  ||    |      -     |   ||   |       -      |
      0|         |  ||    +------------+   ||   |       -      |
       +---------+  ||    | -  -|   ||   |       -      |
      1|         |  |+--->| 稪    -+---||+  |       -      |
       +---------+  |     |  1   |   |||  |       -      |
      2|         |  |     +------------+   |||  |       -      |
       +---------+  |     |      -     |   |||  +--------------+
      3|     ----+--|--+  |      -     |   |||  | -        |
       +---------+  |  |  |      -     |   ||+->| 稪   (local)|
      4|     ----+-+|  |  |      -     |   ||   |  1           |
       +---------+ ||  |  |      -     |   ||   +--------------+
      5|         | ||  |  |      -     |   ||   |       -      |
       +---------+ ||  |  +------------+   ||   |       -      |
       |    -    | ||  |  | -      |   ||   |       -      |
       |    -    | ||  +->| 稪  ⥭+---+|   |       -      |
       |    -    | ||     |  1         |    |   |       -      |
       +---------+ ||     +------------+    |   |       -      |
                   ||     |      -     |    |   |       -      |
                   ||     |      -     |    |   +--------------+
                   ||     |      -     |    |   | -        |
                   ||     +------------+    |+->| 稪 (private)|
                   ||     | -      |    ||  |  1           |
                   |+---->| 稪  +----+|  +--------------+
                   |      |  1         |     |  |       -      |
                   |      +------------+     |  |       -      |
                   |      |      -     |     |  +--------------+
                   |      |      -     |     |
                   |      +------------+     |
                   |      | -      |     |
                   +----->| 稪  ⥭+-----+
                          |  1         |
                          +------------+

    㭮 5.4.    ᫥ ⮣,     
                  ந ⨥ 䠩


                                     89



ﬨ  ⠡ 䠩  ⨯ "  ". ᮭ, ,  ⬥-
,   뫠 ॠ ⠡ 䠩  ⤥쭠 , -
  ᮢ⭮  ᯮ짮        㪠⥫ ᬥ饭 ᪮쪨
짮⥫᪨ ਯࠬ 䠩 (. [Thompson 78], .1943).  ⥬-
 㭪 dup  fork, ᬠਢ  ࠧ 5.13  7.1,    ࠡ
 ࠬ  ᪠ ⠪ ᮢ⭮ ᯮ짮.

       짮⥫᪨ ਯ (0, 1  2)  ਯ-
ࠬ 䠩: ⠭⭮ , ⠭⭮ 뢮    ⠭⭮  䠩
訡.   ⥬ UNIX  ७ ᯮ ਯ 䠩-
 ⠭⭮   ⥭  ଠ樨, ਯ 䠩 ⠭-
⭮  뢮     뢮 ଠ樨  ਯ ⠭⭮
䠩 訡   ᮮ饭  訡.  樮 ⥬  -
 㪠  ,    ਯ  䠩    ᯥ樠묨.
㯯 짮⥫  ᫮  ⮬,  䠩 ਯ, -
騥 祭 4, 6  11,  ᯥ樠묨,   ⢥ 稭
    0 (  몥 ). ਭ⨥ ᮣ襭 ࠧ ᥬ 짮⥫-
᪨ ணࠬ      ᯮ짮 ,  祬
 㡥  쭥襬,   7. 筮 ᪨ ନ  (.
  10) 㦨   ⢥ ⠭⭮ ,   ⢥ ⠭⭮
뢮   ⢥ ⠭⭮ ன⢠ 뢮 ᮮ饭  訡.


        5.2 READ

    ⠪ 맮 ⥬ 㭪樨 read ():
    number = read(fd,buffer,count)

 fd - ਯ 䠩, 頥 㭪樥 open, buffer -  -
   짮⥫᪮ ,      ࠧ  ⠭
   砥 ᯥ譮 襭 믮 㭪樨 read, count - -
⢮ ,  짮⥫ 㦭 , number - ⢮  䠪-
᪨ ⠭ .  㭪 5.5 ਢ  read, 믮騩
⥭  筮  䠩.   頥  ⠡ 䠩  , 
ᮮ⢥ 祭 짮⥫᪮ ਯ 䠩, ᫥
 㪠⥫ (. 㭮 5.3). ⥬  ⠭ 祭 ᪮쪨
ࠬ஢ -뢮  ᭮ ࠭⢥  (㭮 5.6),  ⥬
ᠬ  ࠭ 室   ।  ⢥ ࠬ஢ 㭪樨. 
⭮,  㪠뢠  ⢥ ० -뢮 "⥭",  ⠭-
 䫠, ᢨ⥫騩  ⮬,  -뢮 ࠢ  ᭮
࠭⢮  짮⥫, 祭  稪 ⮢ ࠢ -
 ,   ⠭, ⠭   짮⥫᪮
  , , 祭 ᬥ饭 ( ⠡ 䠩), ࠢ ᬥ-
饭       䠩  , 㤠 稭 -뢮. ᫥
⮣,   ⠭ 祭 ࠬ஢ -뢮  ᭮  -
࠭⢥  ,   頥  , ᯮ 㪠⥫  ⠡
䠩,    ०, 祬  ⥭  䠩.

    ⥬  ⬥ 稭 横, 믮騩   ,  -
 ⥭  㤥 ந  .  ८ࠧ ᬥ饭  
 䠩   , ᯮ -







                                     90
    +------------------------------------------------------------+
    |  read                                              |
    | 室 ଠ:  짮⥫᪨ ਯ 䠩     |
    |                         짮⥫᪮ -  |
    |                                                       |
    |                      ⢮ ,  㦭 - |
    |                                                        |
    | 室 ଠ: ⢮ , ᪮஢  -|
    |                      ⥫᪮ ࠭⢮             |
    | {                                                          |
    |        ⠡ 䠩  祭 짮-|
    |     ⥫᪮ ਯ 䠩;                         |
    |    ஢ 㯭 䠩;                            |
    |    ⠭ ࠬ  ᭮ ࠭⢥ ,  |
    |     㪠  짮⥫, 稪 ⮢, ࠬ   |
    |     -뢮  짮⥫;                         |
    |         ⠡ 䠩;             |
    |    ஢ ;                                   |
    |    ⠭ 祭 ᬥ饭    ᭮     |
    |     ࠭⢠   祭 ᬥ饭  ⠡   |
    |     䠩;                                                |
    |    믮 ( 祭 稪 ⮢  ⠭ 㤮-|
    |     ⢮⥫)                                        |
    |    {                                                       |
    |       ॢ ᬥ饭  䠩   ᪮   |
    |        ( bmap);                                    |
    |       ᫨ ᬥ饭    ⢮ ,   |
    |          ⠭;                            |
    |       ᫨ (⢮   ⥭ ࠢ 0)            |
    |          /* ⪠ ⥭  䠩 */                  |
    |          ࢠ;      /* 室  横 */             |
    |         ( breada, ᫨ ந   |
    |        ⥭  த,   bread -  ⨢- |
    |         砥);                                        |
    |       ᪮஢   ⥬       |
    |        짮⥫;                                       |
    |       ᪮४஢ 祭   ᭮ ࠭-  |
    |        ⢥ , 㪠뢠騥 ᬥ饭    |
    |        䠩, ⢮ ⠭     -  |
    |        ।  ࠭⢮ 짮⥫;                 |
    |       ᢮ ;     /* ஢  ⬥ |
    |                                bread */                    |
    |    }                                                       |
    |    ࠧ஢ ;                                  |
    |    ᪮४஢ 祭 ᬥ饭  ⠡ 䠩   |
    |     ᫥饩 樨 ⥭;                             |
    |     (饥 ᫮ ⠭ );              |
    | }                                                          |
    +------------------------------------------------------------+
                㭮 5.5.  ⥭  䠩

    +------------------------------------------------------+
    | mode     ⥭                             |
    | count    ⢮   ⥭         |
    | offset   ᬥ饭    䠩              |
    | address   , 㤠  ஢ ,|
    |            짮⥫                |
    | flag     ⭮襭    짮⥫   |
    |                                           |
    +------------------------------------------------------+
  㭮 5.6.  ࠬ -뢮, ࠭騥  ࠭⢥ 
                                     91

 bmap,   ᬥ饭    , 㤠 ᫥  -
  -뢮,  ⠪ ⢮ ,   ⠭  .
᫥ 뢠   , ,  த ( bread  
breada)       祭   짮⥫-
᪮ .  ४ ࠬ -뢮  ᭮ ࠭-
⢥    ᮮ⢥⢨  ⢮ ⠭ , 㢥稢 -
祭 ᬥ饭    䠩      짮⥫᪮  -
, 㤠 㤥 ⠢ ᫥  ,  㬥 ᫮ ,
 室 , ⮡ 믮  짮⥫. ᫨ -
  짮⥫  㤮⢮७,    横, ८ࠧ ᬥ-
饭    䠩   , 뢠   ᪠  ⥬
,      짮⥫᪨ , ᢮ 
 ४ 祭 ࠬ஢ -뢮  ᭮ ࠭⢥  -
.    蠥,    믮  짮⥫ -
,    䠩   㤥 ,  ᫨   㦨
訡    ⥭   ᪠   ஢   ࠭⢮
짮⥫.  ४ 祭 ᬥ饭  ⠡ 䠩    ᮮ-
⢨   ⢮ 䠪᪨ ⠭ ; ⮬ ᯥ譮 믮-
 権 ⥭ 룫廊   ᫥⥫쭮  뢠    
䠩. ⥬  lseek (ࠧ 5.6) ⠭ 祭 ᬥ饭
 ⠡ 䠩   冷,  ஬  ⠥  뢠
  䠩.

    +------------------------------------------------------+
    | #include <fcntl.h>                                   |
    | main()                                               |
    | {                                                    |
    |     int fd;                                          |
    |     char lilbuf[20],bigbuf[1024];                    |
    |                                                      |
    |     fd = open("/etc/passwd",O_RDONLY);               |
    |     read(fd,lilbuf,20);                              |
    |     read(fd,bigbuf,1024);                            |
    |     read(fd,lilbuf,20);                              |
    | }                                                    |
    +------------------------------------------------------+

         㭮 5.7. ਬ ணࠬ ⥭  䠩


    ᬮਬ ணࠬ, ਢ  㭪 5.7. 㭪 open -
 ਯ 䠩,  짮⥫ 뫠  ६ fd  ᯮ-
   ᫥ 맮 㭪樨 read. 믮 㭪 read,  ஢-
, ࠢ쭮   ࠬ "ਯ 䠩",  ⠪      䠩
।⥫쭮    ᮬ   ⥭.  ࠭ 祭 
짮⥫᪮ , ⢮ 뢠   砫쭮 ᬥ饭 
  䠩 (ᮮ⢥⢥: lilbuf, 20  0),  ࠭⢥ -
.  १ ᫥ 뢠,  㫥 祭 ᬥ饭 ᮮ-
 㫥  䠩,   頥  室  ,  -
⢥  㫥  . ।,  ⠪  , 
뢠   ࠧ஬ 1024   ,    lilbuf -
 ⮫쪮 20 .  㢥稢 ᬥ饭   ࠭⢠  
 20   뢠 稪   0. ᪮  read 믮-
,    ⠭ 祭 ᬥ饭  ⠡ 䠩  20, ⠪
 ᫥騥 樨 ⥭  䠩    ਯ஬    
, ᯮ  ᬥ饭 20   砫 䠩,  ⥬ -
 頥 ᫮ , 䠪᪨ ⠭, .. 20.
     ୮ 맮 㭪樨 read   ஢ ४⭮ 㪠-
  ਯ  稥 ᮮ⢥饣 䠩, ⮣ ᮬ 

                                     92

⥭, ᪮     㧭,   짮⥫  -
 ᠥ ⮣  ᠬ 䠩, ⢮ ண  뫮  ⠭
  ६  ᫥ 맮 㭪樨.  ࠭  ࠭⢥ 
짮⥫᪨  bigbuf, ⢮ ,  㦭  -
 (1024),  砫쭮 ᬥ饭  䠩 (20), ⮥   ⠡  䠩.
  ८ࠧ ᬥ饭  䠩   ᪮ ,  ࠭,
 뢠 . ᫨  맮 㭪樨 read 諮  த⥫쭮
६,  蠭,   室  ୮ . ,   
  㤮⢮    짮⥫  ⥭   ᮤন
, ᪮ ⮫쪮 1004   1024    室  
. ⮬   ⠢訥 1004     짮⥫-
   bigbuf  ४ ࠬ  ࠭⢥ -
 ⠪ ࠧ, ⮡ ᫥騩 蠣 横 ⥭ 稭  䠩  
1024,  ⮬  ᫥ ஢    1004  bigbuf  -
ꥬ 20 , ⮡ 㤮⢮   ⥭.
        室   砫 横, ᮤঠ饣  ⬥ read.
 ८ࠧ ᬥ饭   (1024)   ᪮  (1),  -
頥  ஬  אַ 樨,  ண ࠭  -
,   ᪨  ᪮ ,  ண 㤥 ந -
.  뢠   ୮    ᪠, ᫨     
 . ,   20     筥 -
  짮⥫᪨ . ० 祬   ⥬ 㭪樨, 
⠭  祭   ᬥ饭  ⠡ 䠩 ࠢ 1044,  
ࠢ 祭 ᬥ饭    , 㤠 㤥 ந ᫥-
饥 饭.  ᫥ 맮 㭪樨 read  ਬ     ᥡ,
   ࢮ 饭  㭪樨,  ᪫祭 ⮣,  ⥭  䠩
    砥 稭   1044, ⠪    祭 㤥
㦥   ᬥ饭 ⮩  ⠡ 䠩,   ᮮ⢥
㪠 ਯ.
    ਬ  뢠, ᪮쪮 룮  ᮢ -뢮 ࠡ
 묨, 稭騬  ࠭  䠩 ⥬  騬 ࠧ-
,  ࠧ .     ⥫  -
権    믮 横  ⬥ read   ⥪ ᫥⢨,
易  ⥫묨 饭ﬨ     ᪠    ,
  ᮤন  ,   ७樥  ᯮ짮 ୮ 㫠.
⥪ ⠭ 㫥 -뢮  ᮧ  ⠪  ࠧ,  ⮡
  짮⥫ ࠧ ஢ ;  ᯮ짮  -
  ந⥫쭮,  ᠬ, ࠡ騬  -
 ﬨ , - 祣  㭪樮஢  ஢ 䠩 -
 䥪⨢ (. ࠦ 5.4).
    믮  横 ⥭,  ।,   䠩 ꥪ⮬ ⥭
 த: ᫨  뢠 ᫥⥫쭮  ,  ।-
,   । 樨  ந ᫥⥫쭮 -
,   ,   㤥 ⢥ত ⭮.   蠣 横 -
   ᫥饣 ᪮    , ࠭饩
 ,   ᫥饬 蠣 ࠢ  ⥪饣 ᪮  
祭,  ࠭. ᫨   ࠢ,      
䨧᪮   ⥭  த  ࠭  祭  -
࠭⢥      ᯮ짮   ⬥ breada. 筮 , 
  ⠫  ,     ⥭   த-
  ᫥饣 .
    ⨢    㭪 4.9, ᯮ,      -
    ᢥ 樨   㫥  祭,  
    ᫥   㫥. ᫨  ⠥ -
   ⠪ ,  믮 , 뤥 ந  -
    横 read,   ᮤন       
짮⥫.  砩   祣 饣  ⥬ 砥,    -
 㦨  䠩, 騩  ⮬,  ᫥ ⮣  
ଠ樨    ந. 㦨  䠩,   -

                                     93

頥   ଠ樨 (. ࠦ 5.1).
      뢠 ⥬ 㭪 read,     
६ 믮 맮. ᫥⢨,    ਮ⠭ 
६  ⥭   , 樨஢  묨    ᢥ
樨  . ᫨       -
  䠩   ६,     ਮ⠭,  㭪  read
   ᮣᮢ . ਬ,    
䠩 ᪮쪮 ; ᫨  ਮ⠭  ६ ⥭ ࢮ  -
,    ன    ᮡࠫ    㣨 , 頥
  ᮤঠ   ६  묨.  ࠧ, -
 ⠥ ஢   ६ 믮  맮  㭪樨  read
  ⮣, ⮡    楫⭮  䠩,   -
 ⮣ ࠧ,    䠩 । 맮 㭪樨.
      㦠 , 騩 ⥭,  ०      ६
   맮 㭪権  ஢  㣨 ᮢ.  
 砭 믮 ⥬ 㭪樨     ᭨  ஢,
   蠥 㣨 ᠬ   䠩    ᮤন-
.  ஭ ⥬ 뫮  ࠢ ঠ  ஢
 ६  ,    䠩,    ⮣  ,  
䠩 㤥  ⨬ ᮬ, ᪮ ⮣   㤥 ঠ
 ६ 䠩 , ⥬ ᠬ   㣨 ᠬ  -
   䠩. ᫨ 䠩   "/etc/ passwd",    䠩-
, ᯮ㥬   ॣ樨  ஢ન 짮⥫᪮  -
஫,  짮⥫  諥 (, , 諥) -
⢮  ॣ樨   ⥬  ⠫ 짮⥫. ⮡ -
   ஡,  ᭨   ஢
 砭 믮  맮 ⥬ 㭪樨,  ᯮ饩  -
. ᫨ ன     䠩   맮 㭪-
樨  read,  ந묨    ᮬ,    
। ,     ࠭  ᢮  ᮣ-
.
    ।,    ਬ,   믮  , 騥

    +------------------------------------------------------------+
    | #include <fcntl.h>                                         |
    | /*  A */                                            |
    | main()                                                     |
    | {                                                          |
    |     int fd;                                                |
    |     char buf[512];                                         |
    |     fd = open("/etc/passwd",O_RDONLY);                     |
    |     read(fd,buf,sizeof(buf));          /* ⥭1 */       |
    |     read(fd,buf,sizeof(buf));          /* ⥭2 */       |
    | }                                                          |
    |                                                            |
    | /*  B */                                            |
    | main()                                                     |
    | {                                                          |
    |     int fd,i;                                              |
    |     char buf[512];                                         |
    |     for (i = 0; i < sizeof(buf); i++)                      |
    |         buf[i] = 'a';                                      |
    |     fd = open("/etc/passwd",O_WRONLY);                     |
    |     write(fd,buf,sizeof(buf));         /* 1 */       |
    |     write(fd,buf,sizeof(buf));         /* 2 */       |
    | }                                                          |
    +------------------------------------------------------------+

            㭮 5.8. , 騥 ⥭  

                                     94



 ᮡ (㭮 5.8). ᫨ ,    믮 -
 open  ⮣,       뢠  ⥬  㭪  read  
write,    믮 㭪樨 ⥭       ᫥-
⥫쭮⥩: ⥭1, ⥭2, 1, 2,    ⥭1,  1,
⥭2,  2,   ⥭1, 1, 2, ⥭2  .. ⠢ -
ଠ樨, 뢠 ᮬ A,   ᫥⥫쭮,   ன
⥬  믮 㭪樨, 뢠  ᠬ; ⥬  ࠭-
,    䠩 ⠭ ⠪ ,   뫨 ᫥ 
䠩. ᯮ짮  墠 䠩  ᥩ (ࠧ 5.4) -
  ࠭஢ ࠭ 楫⭮ 䠩 ᫥  .

    , ணࠬ  㭪 5.9 뢠,      -
 䠩   ࠧ    , ᯮ ࠧ 䠩 -
ਯ.   ࠡ⠥  祭ﬨ ᬥ饭  ⠡ 䠩, 樨-
묨   䠩묨 ਯࠬ, ᨬ,  ⮬ ᨢ  buf1
  buf2   襭 믮      -
,            ६    ந      䠩
"/etc/passwd".


        5.3 WRI

    ⠪ 맮 ⥬ 㭪樨 write ():
    number = write(fd,buffer,count);

  ६ fd, buffer, count  number    ,    -
 ⥬ 㭪樨 read.     䠩 宦    -
  ⥭  筮 䠩. , ᫨  䠩  , ᮮ-
騩 ᬥ饭    , 㤠    ந  ,
  뤥 , ᯮ  alloc,  ᢠ    -
⢥⢨   㪠   ⠡ ᮤন . ᫨ ᬥ-
饭   ᮢ  ᬥ饭   ᢥ  樨,  ,
, ਤ 뤥 ᪮쪮   ᯮ짮   ⢥
 ᢥ 樨  ଠ-

    +------------------------------------------------------------+
    | #include <fcntl.h>                                         |
    | main()                                                     |
    | {                                                          |
    |     int fd1,fd2;                                           |
    |     char buf1[512],buf2[512];                              |
    |                                                            |
    |     fd1 = open("/etc/passwd",O_RDONLY);                    |
    |     fd2 = open("/etc/passwd",O_RDONLY);                    |
    |     read(fd1,buf1,sizeof(buf1));                           |
    |     read(fd2,buf2,sizeof(buf2));                           |
    | }                                                          |
    +------------------------------------------------------------+

    㭮 5.9. ⥭  䠩  ᯮ짮  ਯ஢


  .     ६ 믮 㭪樨 write, ⠪
    , 뤥  ; ࠧ襭 㣨  -
ᠬ     䠩  ࠧ , ᫨ ᪮쪮 ᮢ
뤥  ६, ᯮ     祭 ᬥ饭. 
 蠥,  ४ ࠧ 䠩  , ᫨ 䠩 㢥-

                                     95

稫  ࠧ.
    ।,  ਬ,   뢠   䠩      ஬
10240,  訬 ஬ । 㦥 ᠭ  䠩. ⨢  
 䠩   bmap,  㦨,   䠩   ⮫쪮
ᮮ⢥騩 ⮬  ,  ⠪  㦭   ᢥ  -
樨.  砥 ᪮   ⢥  ᢥ 樨  -
뢠     , ࠭饩  . ⥬  뤥-
  ᪮       뢠      
ᮧ  ᢥ 樨.
     ,   ⬥ read,  室  横, 뢠     
     樨.  ⮬   樨  ।-
, 㤥  ந  楫   ⮫쪮    .  ᫨
뢠 ⮫쪮  ,    । 뢠   -
    ⮣, ⮡    ,  ⠫  , 
᫨ 뢠 楫 ,   㦭   , ⠪    -
  砥      ।饥 ᮤন .  ⢫
筮,   ᯮ ⫮  (ࠧ  3.4)    
,          砩, ᫨   ᪮ 㣮
  ⥭  ,  ⠪  ⮣, ⮡  譨  -
饭   . ⫮ , ⭮,  䥪⨢  -
, ⠪  㣮  ⠥   㤠       (ࠧ
5.12).        䠩 ⫮  䥪⨢, ᫨ 䠩
ᮧ ६  ᪮ 㤥 ⠭. ਬ,  ணࠬ,  -
    ।   ஭ , ᮧ ६ 䠩  ⠫
"/tmp"   㤠 . ᯮ짮 ⫮    ᮪
⢮ 饭      ६ 䠩.


        5.4    

     ࢮ ᨨ ⥬ UNIX, ࠧࠡ⠭ ᮭ  , ⢮-
  ७  堭,   ண     ᯥ祭
᪫⥫   䠩. 堭 墠  ਧ  譨,  -
,   ⬥砥 , "     訬  , -
騬   䠩,    ন  ᨬ묨  ᠬ"
(.  [Ritchie 81]).  ⮣, ⮡  ਢ⥫쭮 ⥬ UNIX
 ᪨ 짮⥫, ࠡ   ,   V  -
⥬  뭥  祭  堭  墠  䠩  . 墠 䠩 - 
।⢮, 饥  㣨 ᠬ ந ⥭   -
     䠩,  墠  -  ।⢮, 饥 -
 㣨 ᠬ ந -뢮 㪠 ᥩ (⥩ 䠩
 㪠묨 ᬥ饭ﬨ).  ࠦ  5.9  ᬠਢ  ॠ
堭 墠 䠩  .


        5.5    ,    - - LSEE

    筮 ᯮ짮 ⥬ 㭪権 read  write ᯥ稢 ᫥-
⥫   䠩,    ᯮ짮 맮 ⥬-
  㭪樨  lseek    㪠      䠩,  㤥 ந
-뢮,  ⢫ ந쭮 㯠  䠩. ⠪  맮
⥬ 㭪樨:

    position = lseek(fd,offset,reference);

  fd  - ਯ 䠩, 騩 䠩, offset - ᬥ饭  -
,  reference 㪠뢠,   祭 offset ᬥ饭   砫
䠩, ᬥ饭  ⥪饩 樨 -뢮  ᬥ饭   䠩-
.  頥  祭, position,  ᬥ饭    ,

                                     96

 㤥 稭 ᫥  ⥭  . ਬ,  ண-
ࠬ, ਢ  㭪 5.10,  뢠 䠩, 뢠  ,
 ⥬ 뢠 㭪 lseek, ⮡  祭  ᬥ饭  ⠡-
 䠩 稭, ࠢ 1023 ( ६ reference, 饩 祭
1),   믮 横.  ࠧ, ணࠬ 뢠  1024- 
䠩. ᫨ reference  祭 0,  ⢫      砫
䠩,    ᫨  2,      䠩. 㭪 lseek 祣 
 , ஬ 樨 ᪠,    樮    -
-    㪠 ᪮ ᥪ.  ⮣, ⮡ 믮 㭪
lseek,   롨ࠥ 祭 ᬥ饭  ⠡ 䠩;  ᫥-
 맮 㭪権 read  write ᬥ饭  ⠡ 䠩  ᯮ  
⢥ 砫쭮 ᬥ饭.


        5.6 CLOS

      뢠    䠩,     㦭 -
  . ⠪ 맮 ⥬ 㭪樨 close ():

    +--------------------------------------------------------+
    | #include <fcntl.h>                                     |
    | main(argc,argv)                                        |
    |      int argc;                                         |
    |      char *argv[];                                     |
    | {                                                      |
    |      int fd,skval;                                     |
    |      char c;                                           |
    |                                                        |
    |      if(argc != 2)                                     |
    |           exit();                                      |
    |      fd = open(argv[1],O_RDONLY);                      |
    |      if (fd == -1)                                     |
    |           exit();                                      |
    |      while ((skval = read(fd,&c,1)) == 1)              |
    |      {                                                 |
    |           printf("char %c\n",c);                       |
    |           skval = lseek(fd,1023L,1);                   |
    |           printf("new seek val %d\n",skval);           |
    |      }                                                 |
    | }                                                      |
    +--------------------------------------------------------+

    㭮 5.10. ணࠬ, ᮤঠ 맮 ⥬ 㭪樨 lseek


    close(fd);
 fd - ਯ ⮣ 䠩.  믮   ,  -
  ਯ  䠩  ଠ  ᮮ⢥ ᥩ  ⠡
䠩  ⠡ ᮢ. ᫨ 稪 뫮   ⠡ 䠩 
祭, 襥, 祬 1,  裡  ⥬,  뫨 饭   㭪  dup
 fork,   砥,     ⠡ 䠩  뫪 -
 짮⥫᪨ ਯ,   㢨 ;  㬥蠥 -
  稪    蠥. ᫨ 稪 뫮  ⠡
䠩  祭, ࠢ 1,  ᢮   ⠡   
  ,  ࠭  뤥  ⥬ 㭪樥 open ( iput). ᫨
㣨    뫠  ,  㬥蠥 祭 -
 뫮  ,  ⠢  ᠬ;  ⨢  砥  -
  ᢮   ७祭, ⠪   稪 뫮 ᮤন
0.  믮 ⥬ 㭪樨 close 蠥,      ⠡

                                     97

짮⥫᪨  ਯ஢ 䠩 ⠭ ⮩. ⪨  -
짮  ਯ 稢 訡   ,  ਯ-
  㤥 ७祭 㣮 䠩  १ 믮 㣮  -
⥬  㭪樨.    蠥,  ஢ 稥 ⨢
짮⥫᪨ ਯ஢ 䠩, ਭ  ,    뢠
   .  ࠧ,      ⠢ 䠩 -
 ᫥ ᢮ 襭.
     㭪 5.11, ਬ,    ⠡, ਢ  -
㭪 5.4, ᫥ ⮣,  ன  뢠 ᮮ⢥騥   䠩-
.  ,  ᮮ⢥騥  ਯࠬ 3  4  ⠡ 짮⥫᪨

 짮⥫᪨ ਯ-
         䠩        ⠡ 䠩        ⠡ ᮢ
       +---------+        +------------+        +--------------+
      0|         |        |            |        |       -      |
       +---------+        |            |        |       -      |
      1|         |        |            |        |       -      |
       +---------+        +------------+        |       -      |
      2|         |        |      -     |        |       -      |
       +---------+        |      -     |        |       -      |
      3|     ----+----+   |      -     |        |       -      |
       +---------+    |   |      -     |        +--------------+
      4|     ----+---+|   |      -     |  +---->| -        |
       +---------+   ||   |      -     |  |     | 稪  (/etc/  |
      5|     ----+--+||   +------------+  | +-->|  2    passwd)|
       +---------+  |||   | -      |  | |   +--------------+
       |    -    |  ||+-->| 稪        +--+ |   |       -      |
       |    -    |  ||    |  1         |    |   |       -      |
       |    -    |  ||    +------------+    |   |       -      |
       +---------+  ||    |      -     |    |   |       -      |
                    ||    |      -     |    |   |       -      |
       +---------+  ||    |      -     |    |   |       -      |
      0|         |  ||    +------------+    |   |       -      |
       +---------+  ||    | -      |    |   |       -      |
      1|         |  |+--->| 稪        +----|+  |       -      |
       +---------+  |     |  1         |    ||  |       -      |
      2|         |  |     +------------+    ||  |       -      |
       +---------+  |     |      -     |    ||  +--------------+
      3|  NULL   |  |     |      -     |    ||  | -        |
       +---------+  |     |      -     |    |+->| 稪   (local)|
      4|  NULL   |  |     |      -     |    |   |  1           |
       +---------+  |     |      -     |    |   +--------------+
      5|         |  |     |      -     |    |   |       -      |
       +---------+  |     +------------+    |   |       -      |
       |    -    |  |     | 稪  0 |    |   |       -      |
       +---------+  |     +------------+    |   |       -      |
                    |     |      -     |    |   +--------------+
                    |     |      -     |    |   | -        |
                    |     +------------+    |   | 稪 (private)|
                    |     | 稪  1 |    |   |  0           |
                    +---->|            +----+   +--------------+
                          +------------+        |       -      |
                          |      -     |        +--------------+
                          |      -     |
                          +------------+
                          | 稪  0 |
                          +------------+

            㭮 5.11.  ᫥  䠩

                                     98



ਯ஢ 䠩, . 稪   ⠡ 䠩  ⥯  
祭  0,    ᠬ  . 稪 뫮  䠩 "/etc/passwd" 
"private"   ⠪ 㬥訫.   䠩 "private" 室
 ᯨ᪥ ᢮ ᮢ, ᪮ 稪 뫮    ࠢ  0,  
    . ᫨  - 
    䠩  "private",    室  ᯨ᪥ ᢮
ᮢ,  ॡ  ⭮,    ࠧ 4.1.2.


        5.7  

    ⥬ 㭪 open       饬  䠩,  
⥬  㭪 creat ᮧ  ⥬  䠩. ⠪ 맮 -
⥬ 㭪樨 creat:

    fd = creat(pathname,modes);

 ६ pathname, modes  fd    ,       ⥬
㭪樨  open.  ᫨ ० ⠪ 䠩  ⢮,  ᮧ 
䠩  㪠   㪠묨 ࠢ 㯠  ; ᫨    ⠪
䠩  㦥 ⢮,  ᥪ 䠩 (᢮  騥 

    +------------------------------------------------------------+
    |  creat                                             |
    | 室 ଠ:   䠩                             |
    |                      ⠭ ࠢ 㯠  䠩        |
    | 室 ଠ: ਯ 䠩                      |
    | {                                                          |
    |        䠩 ( namei);|
    |   ᫨ (䠩 㦥 )                               |
    |   {                                                        |
    |      ᫨ (  ࠧ襭)                             |
    |      {                                                     |
    |         ᢮  ( iput);                 |
    |          (訡);                               |
    |      }                                                     |
    |   }                                                        |
    |    ⨢ 砥    /* 䠩    */       |
    |   {                                                        |
    |       ᢮   䠩 ⥬ (- |
    |        ialloc);                                        |
    |      ᮧ   室  த⥫᪮ ⠫:    |
    |          䠩    祭 |
    |       ;                                             |
    |   }                                                        |
    |   뤥     ⠡ 䠩, 樠-|
    |    ஢ 稪;                                         |
    |   ᫨ (䠩 ⢮   ᮧ)               |
    |      ᢮   䠩 ( free);           |
    |    ஢ ( );                            |
    |    (짮⥫᪨ ਯ 䠩);          |
    | }                                                          |
    +------------------------------------------------------------+


               㭮 5.12.  ᮧ 䠩


                                     99

  ⠭ ࠧ 䠩 ࠢ 0)    稨  ᮮ⢥
ࠢ 㯠   (***).  㭪 5.12 ਢ  ᮧ 䠩.
      ஢  ᨭ⠪᪨    ᪠, ᯮ -
 namei  ᫥ ⮬  㪢쭮,         ࠧ
  ⠫. ,   ᠥ ᫥   
᪠,   䨪 ᮧ 䠩, namei ⬥砥  ᬥ饭
   ࢮ
⮩ 樨  ⠫    ᬥ饭  ࠭⢥ .
᫨   㦨  ⠫    ᪠,     -
筮         ⮫쪮    .
᫨  ⠫   権,   ᬥ饭    -
    ᮧ   ⠬.  ⠪   ࠭⢥ -
  ᬠਢ ⠫  ন  ஢;  -
⠫ ⠭  ⭮襭   䠩 த⥫᪨ ⠫.  
뢠      䠩  ⠫, ⠪   砥 
訡  室  ।뢠.  ஢ 稥  
ࠧ襭    ⠫. ᪮  㤥 ந  
⠫  १ 믮 㭪樨 creat, 稥 ࠧ襭   
 ⠫ 砥,  ᠬ  ᮧ 䠩  ⠫.
    ।,         ࠭  ⢮ 䠩, 
砥  䠩 , ᯮ  ialloc (ࠧ 4.6). ⥬
 뢠   䠩    뤥      த-
⥫᪨  ⠫,    ᬥ饭    ࠭  ࠭⢥ .
᫥⢨  ᢮  த⥫᪮ ⠫, 㤥ন  
⮣  ६,   ⠫ ந   䠩. ⥫᪨
⠫ ⥯ ᮤন   䠩   .  뢠 
뤥    ( bwrite), ० 祬    -
⠫   . ᫨  ﬨ    ⠫  ந-
  ᡮ  ⥬,    ⮣ ,  뤥 ,   
뫠     ⥩ ᪠  ⥬,  ⥬ 㤥 㭪-
樮஢ ଠ쭮. ᫨,  㣮 ஭, ⠫    ᠭ  ࠭
 뤥   ᡮ ⥬ ந襫  , 䠩 -
⥬  㤥 ᮤঠ   ᪠, 뫠饥    (
஡  ⮬ .  ࠧ 5.16.1).
    ᫨  䠩 㦥 ⢮  맮 㭪樨 creat,  㦨-
    ६ ᪠  䠩.   䠩    
  ந   , ⮡  뫮 ᮧ "" 䠩 
⥬  ᠬ , ⠪    ᮤন 䠩    믮
㭪樨  creat:  ᥪ 䠩, ᢮  ଠ樮   -
 free, ⠪  䠩 㤥 룫拉   ᮧ.     -
,      ࠢ 㯠  䠩  ०:   ।
ࠢ ᮡ⢥  䠩      ࠢ  㯠,
㪠  ᮬ    맮  㭪樨. ,   ஢ 稥
ࠧ襭    ⠫, 騩  த⥫᪨    饣
䠩, ᪮    ᮤন ⠫.
    㭪 creat த ࠡ, 믮   ,   㭪
open.   뤥 ᮧ 䠩   ⠡ 䠩, ⮡ 
   䠩,  ⠪   ⠡ 짮⥫᪨  ਯ஢
䠩,        殢  頥 㪠⥫  ᫥   
짮⥫᪮ ਯ 䠩.



---------------------------------------
(***)  ⥬  㭪 open   䫠, O_CREAT (ᮧ)  O_TRUNC
      (祭). ᫨  ⠭  맮 㭪樨 䫠 O_CREAT 
      䠩  ,  ᮧ 䠩. ᫨ 䠩 㦥 ,  
      㤥 祭, ᫨ ⮫쪮  ⠭ 䫠 O_TRUNC.


                                    100

        5.8   

    ⥬ 㭪 mknod ᮧ  ⥬ ᯥ樠 䠩,  ᫮ -
   , 䠩 ன  ⠫.  -
  㭪 creat  ⮬,   뤥  䠩 . ⠪ -
 ⥬ 㭪樨 mknod:

    mknod(pathname,type and permissions,dev)

 pathname -  ᮧ 設   ᪮    䠩
⥬, type and permissions - ⨯ 設 (ਬ, ⠫)  ࠢ -
㯠  ᮧ 䠩,  dev 㪠뢠 訩  訩  ன-
⢠     ᨬ ᯥ樠 䠩 ( 10).  㭪 5.13
ਢ , ॠ㥬 㭪樥 mknod  ᮧ  設.
    +------------------------------------------------------------+
    |  ᮧ  設                            |
    | 室 ଠ:  設 ( 䠩)                   |
    |                      ⨯ 䠩                             |
    |                      ࠢ 㯠                         |
    |                      訩, 訩  ன⢠    |
    |                      (   ᨬ ᯥ樠 |
    |                      䠩)                               |
    | 室 ଠ:                            |
    | {                                                          |
    |    ᫨ ( 設       |
    |      짮⥫   㯥௮짮⥫)         |
    |         (訡);                                |
    |      設, 饩 த⥫᪮     |
    |      設 ( namei);                        |
    |    ᫨ ( 設 㦥 )                     |
    |    {                                                       |
    |        ᢮ த⥫᪨  ( iput);     |
    |         (訡);                                |
    |    }                                                       |
    |       設 ᢮   䠩|
    |     ⥬ ( ialloc);                             |
    |    ᮧ    த⥫᪮ ⠫:   |
    |       設    祭 ;  |
    |    ᢮  த⥫᪮ ⠫ (      |
    |     iput);                                                 |
    |    ᫨ ( 設    ᨬ ᯥ-|
    |     樠 䠩)                                       |
    |         訩  訩    -|
    |         ;                                                |
    |    ᢮   設 ( iput);        |
    | }                                                          |
    +------------------------------------------------------------+

            㭮 5.13.  ᮧ  設

     ᬠਢ 䠩 ⥬  ᪠  䠩,    
ᮡࠥ ᮧ. ᫨ 䠩    ,  砥  -
      ᪥  뢠   䠩     த-
⥫᪨ ⠫.  ⠭ 祭  ⨯ 䠩  , 㪠-
뢠,  䠩  , ⠫  ᯥ樠 䠩. ,
᫨ 䠩  ᯥ樠 䠩 ன⢠  筮    ᨬ쭮
⨯,    뢠     訩  訩  ன⢠. ᫨
㭪 mknod ᮧ ⠫,  㤥 ⢮  襭  믮-
 㭪樨,   ᮤন 㤥   ଠ ( ⠫ 

                                    101

⢮    "."  "..").  ࠦ 5.33 ᬠਢ-
  蠣,  室   ८ࠧ ᮤন ⠫  ࠢ
ଠ.

    +------------------------------------------------------------+
    |  ᬥ ⠫                                    |
    | 室 ଠ:    ⠫                   |
    | 室 ଠ:                            |
    | {                                                          |
    |       ⠫    (   |
    |     namei);                                                |
    |    ᫨ (   ᮬ ⠫   -  |
    |       ࠧ襭   䠩)                      |
    |    {                                                       |
    |       ᢮  ( iput);                   |
    |        (訡);                                 |
    |    }                                                       |
    |     ஢  ;                             |
    |    ᢮  ० ⥪饣 ⠫ (  |
    |     iput);                                                 |
    |          ⥪饣 ⠫  |
    |      ࠭⢥ ;                               |
    | }                                                          |
    +------------------------------------------------------------+

            㭮 5.14.  ᬥ ⥪饣 ⠫



        5.9     

     ⥬ 㦠 , 㫥   ୥ -
 䠩 ⥬ ⥪騬  ६ 樠樨.     ୥
⠫  㫥    믮  iget, ࠭   
࠭⢥   ⢥  ⥪饣 ⠫  ᭨    -
  ஢.     㭪樨 fork ᮧ  , 
᫥ ⥪騩 ⠫ ண   ᢮ ᭮ ࠭⢥,  
, ᮮ⢥⢥, 㢥稢 祭 稪 뫮  .
     chdir (㭮 5.14)   ⥪饣 ⠫  -
. ⠪ 맮 ⥬ 㭪樨 chdir:

    chdir(pathname);

 pathname - ⠫,  ⠭ ⥪騬  .  -
  ⠫, ᯮ  namei,  ஢,   -
  䠩  ⠫       ࠢ 㯠  ⠫.
 ᭨    ஢,  㤥ন      ⢥
뤥    ⠢  稪  뫮  , ᢮ 
० ⥪饣 ⠫ ( iput), ࠭騩   ࠭⢥  -
,     ⮬ ࠭⢥  . ᫥ ᬥ ᮬ
⥪饣 ⠫  namei ᯮ   ⢥ 砫쭮 -
⠫     ⥩,     砫    .  
砭 믮 ⥬ 㭪樨 chdir 稪 뫮   
⠫  祭,  , 1,  稪 뫮   ०
⥪饣 ⠫   ࠢ 0.  ⮬ ⭮襭 㭪 chdir -
  㭪 open, ᪮  㭪樨   䠩  ⠢ 
   ⢥ 뤥. , 뤥  ६ 믮 㭪-
樨 chdir, ᢮ ⮫쪮 ⮣,    ⥪騩  ⠫
 ࠧ    蠥.

                                    102

      筮 ᯮ  ୥ ⠫ 䠩 ⥬
   ⥩ ᪠, 稭  "/".  ࠭  -
,  㪠뢠   쭮 , 뤥塞    -
  iget  㧪 ⥬.    ᢮ ।⠢ 
୥ ⠫ 䠩 ⥬   ⥬ 㭪樨  chroot.  
뢠 , ᫨ 짮⥫ 㦭 ᮧ  筮 ᪮
  䠩 ⥬    ⠬. ⠪ 맮 㭪-
樨:

    chroot(pathname);

 pathname - ⠫,  ᫥⢨ 㤥 ᬠਢ  ஬  
⢥ ୥ ⠫  . 믮 㭪 chroot,  ᫥-
  ⮬    ,    ᬥ ⥪饣 ⠫.  
    ࠭⢥ , ᭨   ஢  
襭 믮 㭪樨.   , ⠪  㬮砭  ७ 
 ࠭  쭮 ६,  ᢮  ० -
    ⮬᪨,   ⮫쪮 ᫥ ⮣,   ᠬ  -।
ᯮ 맮 㭪樨 chroot.     ⠭  ᪨  ୥
䠩  ⥬     (   ஦  ᮢ)  
砥,    ᪠  ⬥ namei, 稭騥   ("/"),
 砫       ⪨   ⠫ ".."  
୥  ਢ   ⮬,  ࠡ稬 ⠫  ⠭  -
७.  । ᥬ  ஦ ᠬ  ⠫    -
⢥ ୥  ⮬,  । ᢮ ⥪騩 ⠫.


        5.10       

          ० (ࠢ) 㯠  䠩  樥,
ந  ᮬ,    䠩. ⠪ 맮 ᮮ⢥
⥬ 㭪権:

    chown(pathname,owner,group)
    chmod(pathname,mode)

     ⮣, ⮡   䠩,  ८ࠧ   䠩  
䨪  ,  ᯮ   namei.   
 㯥௮짮⥫  楬 䠩 (   ᯮ裂
⥬,   ਭ ). ⥬  砥 䠩    
 㯯 짮⥫, 뢠 䫠 ० ⠭ (. ࠧ-
  7.5)  ᢮    iput. ᫥ ⮣ ० -
  ࠢ "ᮡ⢥"  䠩.   ⮣,  ⮡    ०
㯠    䠩,  믮 楤,  ᠭ,  
  䫠, ⠭騥 ० 㯠.


        5.11 STAT  FST

    ⥬ 㭪樨 stat  fstat  ᠬ 訢  ଠ-
      䠩: ⨯ 䠩,  䠩, ࠢ 㯠, ࠧ
䠩, ᫥ 痢,    ६ 㯠  䠩. ⠪ -
 㭪権:

    stat(pathname,statbuffer);
    fstat(fd,statbuffer);

 pathname -  䠩, fd - ਯ 䠩, 頥 㭪樥 open,
statbuffer -    짮⥫᪮  ,    㤥

                                    103

࠭  ଠ      䠩 ᫥ 襭 믮 맮.
⥬  㭪樨    ९뢠             
statbuffer.  ணࠬ    㭪  5.33  ᯮ짮 㭪権
stat  fstat.

    뢠                    ᮢ⭮ ᯮ짮
          -                                           
           -                                       -    -
            -                                -         -
             -                         -              -
              -               A               -
               -                 |                  -
                -  +-------------+--------------+  -
                 - |                            | -
              B                         C
                 |
         +-------+-------+
         |               |
     D    -      E
        -        -        -
           -     -     -
              -  -  -
                 -
         ⭮ ᯮ
                

    㭮 5.15. ॢ ᮢ  ᮢ⭮ ᯮ짮 



        5.12 

      ।   ᠬ  浪  㯫-
  ("  襫  -  襫"),  ⠪ ᨭ஭஢ 믮
ᮢ.  ᯮ짮    ᠬ    ⢮
 ᮡ,    ⭮,   室  㣮 -
  .  ࠤ樮 ॠ  ᯮ 䠩 ⥬ 
࠭ .    :   ,   -
⢨  襣  ନ,  ,   
ᮡ  ᥬ, ஬ ᯮᮡ ࢮ砫쭮 饭   ᮢ.  
    ᯮ ⥬ 㭪 open,  ⥬-
 㭪 pipe -  ᮧ  .  ᫥⢨,  
ࠡ     묨 ⥬묨 㭪ﬨ  䠩-
,  ⠪  read, write  close. 쪮 易  ᮡ ,
騥 ⮬ ⮣ ,  맢 㭪 pipe,   ࠧ-
      . ਬ (. 㭮 5.15), ᫨
 B ᮧ   ஦  D  E,     ࠧ-
   ᮡ   ,  ⫨稥  ᮢ A  C. , 
      ᨬ   ⭮-
襭  ,  ᫮   ࠢ 㯠  䠩. ᪮-
    ,   ᬮ७ 묨.


        5.12.1 ⥬ 㭪 pip

    ⠪ 맮 㭪樨 ᮧ :

    pipe(fdptr);


                                    104

  fdptr  -  㪠⥫  ᨢ   楫 ६,  ஬ 
࠭  ਯ 䠩  ⥭         .
᪮  ॠ   䠩 ⥬  ᪮  
  ⮣,    ᯮ짮,    ᮧ -
   .  ⠪ 砥    짮⥫-
᪨ ਯ஢  ᮮ⢥騥    ⠡ 䠩:   -
ਯ஢   ⥭  ,  㣮    . ᪮ 
 ⠡楩 䠩, 䥩  맮 㭪権 read, write    .
ᮣ  䥩ᮬ   䠩.  १ ᠬ  -
 ,    ⥭     䠩   .

    +------------------------------------------------------------+
    |  pipe                                              |
    | 室 ଠ:                             |
    | 室 ଠ: ਯ 䠩  ⥭           |
    |                      ਯ 䠩             |
    | {                                                          |
    |        ன⢠  (   |
    |     ialloc);                                               |
    |    뤥    ⠡ 䠩  ⥭,  -|
    |      ९;                                          |
    |    樠஢   ⠡ 䠩 ⠪ ࠧ, |
    |     ⮡  㪠뢠   ;                   |
    |    뤥  짮⥫᪨ ਯ 䠩  -|
    |     ,  -  , ந樠஢  ⠪   |
    |     ࠧ, ⮡  㪠뢠  ᮮ⢥騥 窨  |
    |     室  ⠡ 䠩;                                |
    |    ⠭ 祭 稪 뫮   ࠢ 2; |
    |    ⠭ 祭 稪 ᫠ ᮢ, ந-|
    |      ⥭,  ᮢ, ந , ࠢ 1;|
    | }                                                          |
    +------------------------------------------------------------+

       㭮 5.16.  ᮧ  ()


      㭪 5.16   ᮧ  . 
砥     䠩 ⥬, 祭  "ன-
 ", ᯮ  ialloc. ன⢮   -      
䠩 ⥬,  ன       뤥
    .    ⥬ 㪠뢠 ன⢮  
䨣஢ ⥬   ன⢠  ᮢ  ࠧ  䠩
⥬.    ⨢,    ७    -
ଠ樮   㣮 䠩.
    ⥬  뤥  ⠡ 䠩  ,  ᮮ⢥騥  -
ਯࠬ   ⥭    ,  ४ "壠" -
     .     뤥  ᥩ    ⠡
䠩  ࠭  ଠ    ⮬, ᪮쪮 ஢   
⥭   (ࢮ砫쭮 1),  稪 뫮     㪠뢠,
᪮쪮 ࠧ   "" (ࢮ砫쭮 2 -     -
 ⠡ 䠩). ,   뢠 ᬥ饭   
   ,  㤥 稭 ᫥    ⥭.
 ࠭  ᬥ饭     ந
      浪  㯫   (" 襫  -
  襫");       ᮡ , ᪮ 
 䠩 ᬥ饭 ࠭  ⠡ 䠩.     
 ᬥ饭   ⥬ 㭪樨 lseek  ⮬ ந 
   .


                                    105

        5.12.2 ⨥  

       -  䠩, 騩  ⠪  ᥬ⨪,  
 ,  ᪫祭 ⮣,   ⮬  䠩  ᮮ⢥
   ⠫  饭   ந  .  -
   ⠪ ,    䠩, ,  ᫥⥫쭮,  
     ⢮  ᮡ  -
,  騥     ⭮襭.   -
ﭭ   娨 䠩 ⥬ ( ன  㤠  
 ⥬ 㭪樨 unlink),     ६-
묨:      稢 ࠡ  ,  ⡨ࠥ 
 .
          祭    
筮  䠩.  , । 室  㭪樨  㢥稢 祭
 稪  ,  뢠 ⢮ ᮢ,  
    ⥭  . , 뢠騩 -
   ⥭, ਮ⠭ ᢮ 믮   ,    㣮
    ஥       ,  .  
᫠ 뢠   ⥭, ᫨     ;
  ᠬ ᠥ .  ᨬ  ⮣, 뢠   -
      ⥭,      믮
 ᮢ,  뫨 ਮ⠭   , 뢠-
     뢠饣    (ᮮ⢥⢥).
    ᫨    뢠    ⥭, 祬 ,
뢠騩  , , ⨥ 蠥.  ᫨  -
뢠  䠩  ࠬ஬ "no delay", 㭪 open  頥
ࠢ  ,       뢠饣 . 
 ⠫   ਮ⠭   ,  뢠-
騩   ஥ .  ࠢ     ,
뢠饣   .


        5.12.3 ⥭      

      ᫥  ᬠਢ  ⠪ 㣫 ७,   
    ,  뢠   㣮  .    㦥
ਫ  ,        浪  -
  ;  砥,  ।,  ன   뢠
 , ᮢ  ।  롮ન  .  -
 ᮢ, 뢠   ,  ⢮ ᮢ, 
  , ᮢᥬ  易⥫쭮; ᫨  ᫮ ⫨砥  㣮
, 祬  1,   न஢ ᢮ ⢨  ᯮ짮-
       㣨 堭.  頥    
筮 ⠪ ,      筮 䠩:  ࠭     -
ன⢥      砥  ⮫쪮 , ᪮쪮 㦭,  ६
믮 㭪樨 write. 稥  뤥     

           +--------------------+--------------------+
           |  ⥫ ⥭  |  ⥫   |
           +----------+---------+----------+---------+
                      |   +----------------+
                      +-- | --------------+
                          v               v
            +---+---+---+---+---+---+---+---+---+---+
            | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
            +---+---+---+---+---+---+---+---+---+---+
              אַ 樨  

      㭮 5.17. ᪠ 奬 ⥭    

                                    106

筮 䠩 ⮨  ⮬,   ᯮ     ⮫쪮  
אַ 樨  楫 襭 䥪⨢ ࠡ,    -
  ।  ࠭祭  ꥬ , ६  
.  ࠡ⠥   אַ 樨      横᪮
।,  ন  ᢮  㪠⥫ ⥭    -
祭 । 㦨 " 襫  -    襫"  (㭮
5.17).
    ᬮਬ   ਬ -뢮  :   ,  -
஬     ; ⥭   ,    ஬  筮
    㤮⢮७     ⥭; ⥭  ,  ஬
 筮;    ,     .
    ᬮਬ  砩,  ஬     ,  -
騩        :  㬬 ⢠ 뢠   ᫮
, 㦥 室  ,   ࠢ  .  ᫥-
      䠩,  ᪫祭 ⮣,   㢥-
稢 ࠧ  ⮬᪨ ᫥  믮 㭪樨 write,
᪮  । ꥬ       樥 -
.  ந室 㢥祭 ࠧ 筮 䠩:  㢥稢-
 ࠧ 䠩 ⮫쪮 ⮣,      㯠 ࠭
 䠩. ᫨ ᫥饥 ᬥ饭    ॡ  ᯮ짮  
ᢥ  樨,    ⠭  祭 ᬥ饭  ࠭⢥
 ⠪ ࠧ, ⮡  㪠뢠   砫    (ᬥ饭  
, ࠢ 0).    ࠥ   ;   -
  祭 ᬥ饭  0, ᪮  㦥 ⠭,    -
 ९  .       ᢮  -
,   ⪮४ 祭 㪠⥫  ( )  ⠪
ࠧ,  ᫥騩  த      ⮣  ,  
⠭  ।    write.  ⥬   믮
 㣨 ᮢ, ਮ⠭   뢠    -
.
        ᪠ 㭪 ⥭  ,  ஢, ⮩
   . ᫨    ,   뢠      
⠪,    ᫨      䠩, 믮 ᮮ⢥騩 -
. , 砫 ᬥ饭 㤥 祭 㪠⥫ ⥭,  ࠭-
    뢠饣 殮 ⠭ ࠭ . ᫥
뢠    㬥蠥 ࠧ   ᮮ⢥⢨  -
⢮  ⠭     ⠭ 祭 ᬥ饭  ࠭⢥
 ⠪, ⮡  ⨦    㪠뢠   砫.
 믮 ⥬ 㭪樨 read 蠥,     -
   ਮ⠭ ᮢ    ⥪饥 -
 㪠⥫ ⥭   (    ⠡ 䠩).
    ᫨  ⠥   ଠ樨, 祬 䠪᪨    
, 㭪 read  ᯥ譮, ⨢  , 室騥 
    ,     믮  짮-
. ᫨  ,  筮 ਮ⠭   ,   -
- 㣮      , ᫥ 祣  ਮ-
  ,  騥    ,  ᢮ 믮 
 ஢  ⥭  . ᫨,  ,    뢠
      ࠬ஬  "no delay" ( প), 㭪 read
 ࠢ , ᫨    .  樨
⥭           ᥬ⨪,    樨
 ନ ன ( 10),   ᠬ  ஢
⨯  䠩,  묨  ணࠬ  .
    ᫨              ,
 砥   ਮ⠭ 믮    , 
  筥   .  ᫥⢨ 㣮  㤥
뢠   ,   ⢮  ᮢ,  ਮ-
    ⪨ ,    믮  -
,   뫮 ᭥ . ᪫祭  ⮣  ⢥ত  

                                    107

,     뢠   , ꥬ  ॢ蠥
  ( , ꥬ ,   ࠭   -
 樨);  ⮬ 砥  뢠   ⮫쪮 , ᪮-
     ᥡ,  ਮ⠭    ,   
᢮ ⥫쭮 .  ࠧ,  ,  -
஬ 뢠     뢭   , ᫨
㣨          ६,  ஥  
ࢠ ᢮ ࠡ.
     ॠ ,  ,   䥩  ᮢ
ᮣ   䥩ᮬ  䠩,   饭 ⫨砥, ⠪
   ᬥ饭  ⥭      ⮣, -
    ⠡ 䠩.  㦤 ࠭ 祭 ᬥ饭 
     ⮣, ⮡   ᮢ⭮ -
짮  祭:      ᮢ⭮  ᯮ짮  祭,
࠭騥  ⠡ 䠩, ⠪   砥    ⠡
䠩    맮 㭪樨 open.   , ᮢ⭮ ᯮ짮-
 ᬥ饭 ⥭        ॠ樨  -
  . , 騥   , ࠧ
   १ 騥 窨 室  ⠡ 䠩, ⮬   
    㬮砭 ࠭ ᬥ饭   ⥭  ⠡ 䠩,  
ਭ   䠩.   뫮 ᤥ, ⠪   楤  
஢,  ࠡ騥  ,    㯠    ⠡ 䠩-
: ணࠬ ⨫   ⮣,    ᮢ⭮  ᯮ
祭 ᬥ饭, ࠭騥  .


.te1        5.12.4 ⨥ 

      ⨨    믮   ᠬ 楤,   
⨨ 筮 䠩,  ᪫祭 ⮣,  , ०  祬  ᢮-
  , 믮 ᯥ樠 ࠡ.  㬥蠥 -
  ᮢ ⥭        ᨬ  ⨯ 䠩-
 ਯ. ᫨ 祭 稪 ᫠ 뢠     -
ᮢ  ⠭  ࠢ 0   , ਮ⠭  
⥭   ,   믮 ᫥   -
 ᢮ 樨 ⥭   -  .  ᫨  ⠭
ࠢ  0  祭 稪 ᫠ 뢠   ᮢ  
, ਮ⠭       , -
  믮 ᫥  뫠  ᨣ ( 7)  訡-
.      ᫠ த ঠ   ਮ⠭-
묨,  ᫨    ,  ﭨ  - -
. ਬ, ᫨    ந ⥭   -
    ⥬   ᮢ, 뢠   -
,  ,  뢠騩    . ᬮ  , 
᫨  ,  ਭ樯     뢠饣
  뢠饣  ,  ࠪ   筮 ⠪ ,  
  . ᫨    頥    뢠-
騩  뢠騩 ,  ᢮  ଠ樮  -
    ⠭   ⠪ ࠧ, ⮡  㪠뢠  , 
 .   ᢮  筮 ,    ᢮
 ७祭  ᪮  ⮣ .



        5.12.5 ਬ

    ணࠬ  㭪 5.18  ⢥ ᯮ짮 -
.    ᮧ    室  ᪮ 横, 뢠  


                                    108

               +---------------------------------+
               | char string[] = "hello";        |
               | main()                          |
               | {                               |
               |    char buf[1024];              |
               |    char *cp1,*cp2;              |
               |    int fds[2];                  |
               |                                 |
               |    cp1 = string;                |
               |    cp2 = buf;                   |
               |    while(*cp1)                  |
               |          *cp2++ = *cp1++;       |
               |    pipe(fds);                   |
               |    for (;;)                     |
               |    {                            |
               |        write(fds[1],buf,6);     |
               |        read(fds[0],buf,6);      |
               |    }                            |
               | }                               |
               +---------------------------------+

         㭮 5.18. ⥭      



ப ᨬ "hello"  뢠   .   㦭      
⮬,   , 騩   ,   ᮬ, 뢠騬
 ,    ⮬  - ᯮ⢮.
    , 믮騩 ணࠬ,  ਢ  㭪 5.19,  ᮧ-
     "fifo". ᫨   饭  㪠-
 ண (ଠ쭮) 㬥,  -

    +------------------------------------------------------------+
    | #include <fcntl.h>                                         |
    | char string[] = "hello";                                   |
    | main(argc,argv)                                            |
    |     int argc;                                              |
    |     char *argv[];                                          |
    | {                                                          |
    |     int fd;                                                |
    |     char buf[256];                                         |
    |                                                            |
    | /* ᮧ    ࠧ襭 ⥭    |
    |       짮⥫ */                        |
    |     mknod("fifo",010777,0);                                |
    |     if(argc == 2)                                          |
    |          fd = open("fifo",O_WRONLY);                       |
    |     else                                                   |
    |          fd = open("fifo",O_RDONLY);                       |
    |     for (;;)                                               |
    |          if(argc == 2)                                     |
    |               write(fd,string,6);                          |
    |          else                                              |
    |               read(fd,buf,6);                              |
    | }                                                          |
    +------------------------------------------------------------+

         㭮 5.19. ⥭     


                                    109

ﭭ 뢠   ப ᨬ "hello";  饭  -
  㬥,   ⥭   .   -
    ⮩  ணࠬ,  ⠩  ਢ  ⢮
  ᮡ  १   "fifo",    室 
த⢥묨 ᠬ. 㣨 짮⥫    믮  ணࠬ  
⢮   (  ).


        5.13 DU

    ⥬ 㭪 dup  ਯ 䠩  ࢮ ᢮ 
  ⠡  짮⥫᪨  ਯ஢ 䠩,   ਯ
짮⥫.     ⨯ 䠩. ⠪ 맮 㭪樨:

    newfd = dup(fd);

 fd - ਯ 䠩, 㥬 㭪樥,  newfd -   ਯ,
뫠騩    䠩. ᪮ 㭪 dup 㡫 ਯ 䠩, 
㢥稢 祭 稪  ᮮ⢥饩  ⠡ 䠩 -  -

    ⠡ 짮-
    ⥫᪨ ਯ-
       ஢ 䠩        ⠡ 䠩        ⠡ ᮢ
       +---------+        +------------+        +--------------+
      0|     ----+----+   |            |        |       -      |
       +---------+    |   |            |        |       -      |
      1|     ----+---++-->|            |        |       -      |
       +---------+   |    +------------+        |       -      |
      2|     ----+--++--->|      -     |        |       -      |
       +---------+  +---->|      -     |        |       -      |
      3|     ----+----+   |      -     |        |       -      |
       +---------+    |   |      -     |        +--------------+
      4|     ----+---+|   |      -     |  +---->| -        |
       +---------+   ||   |      -     |  |     | 稪  (/etc/  |
      5|     ----+--+||   +------------+  | +-->|  2    passwd)|
       +---------+  |||   | -      |  | |   +--------------+
      6|     ----++ ||+-->| 稪        +--+ |   |       -      |
       +---------++-||--->|  2         |    |   |       -      |
      7|         |  ||    +------------+    |   |       -      |
       +---------+  ||    |      -     |    |   |       -      |
       |    -    |  ||    +------------+    |   |       -      |
       +---------+  ||    | 稪    |    |   |       -      |
                    |+--->|      1     +----|+  |       -      |
                    |     +------------+    ||  |       -      |
                    |     |      -     |    ||  +--------------+
                    |     |      -     |    ||  | -        |
                    |     |      -     |    |+->| 稪   (local)|
                    |     |      -     |    |   |  1           |
                    |     |      -     |    |   +--------------+
                    |     +------------+    |   |       -      |
                    |     | 稪    |    |   |       -      |
                    +---->|      1     +----+   |       -      |
                          +------------+        |       -      |
                          |      -     |        +--------------+
                          |      -     |
                          +------------+

    㭮 5.20.   ᫥ 믮 㭪樨 dup


                                    110


,      㪠뢠 易   窨 室  ⠡ 䠩
ਯ஢,  ⥯ ⠫   . ਬ,   
,  ࠦ  㭪 5.20, 뢠,   뢠 ᫥-
  ᫥⥫쭮  㭪権:    뢠  (open)  䠩    
"/etc/passwd" (䠩 ਯ 3), ⥬ 뢠 䠩   "local"
(䠩  ਯ  4), ᭮ 䠩   "/etc/passwd" (䠩 -
ਯ 5) , , 㡫 (dup) 䠩 ਯ 3,  -
ਯ 6.
    , dup - 㭪,  ⫨ ⢮, ᪮  ।-
,  짮⥫   ⮬,  ⥬  ᢮ -
 室  ⠡ 짮⥫᪨ ਯ஢,  訩  .
,    㦨   ஢ ᫮ ணࠬ  
 樮 , ,  ⭮,      ᮧ
஢, ⠢   ஢.
    ᬮਬ  ணࠬ,  ਢ  㭪 5.21.  ६ i -
  ਯ  䠩,   頥      १      䠩
"/etc/passwd",    ६ j - ਯ 䠩, 頥 ⥬ 
१ 㡫஢ ਯ i     㭪樨  dup.    ᭮
࠭⢥   짮⥫᪨ ਯ, ।⠢ -
묨  i   j, 뫠        ⠡ 䠩  ⮬
ᯮ     祭 ᬥ饭  䠩.  ࠧ,  -
   맮 ᮬ 㭪樨 read ॠ ᫥⥫쭮 뢠
,    buf1  buf2  ᯮ  ࠧ  .  ᥬ
㣮 १ 砥,  

    +--------------------------------------------------------+
    | #include <fcntl.h>                                     |
    | main()                                                 |
    | {                                                      |
    |     int i,j;                                           |
    |     char buf1[512],buf2[512];                          |
    |                                                        |
    |     i = open("/etc/passwd",O_RDONLY);                  |
    |     j = dup(i);                                        |
    |     read(i,buf1,sizeof(buf1));                         |
    |     read(j,buf2,sizeof(buf2));                         |
    |     close(i);                                          |
    |     read(j,buf2,sizeof(buf2));                         |
    | }                                                      |
    +--------------------------------------------------------+

    㭮 5.21. ணࠬ  몥 ,  ᯮ짮-
                   㭪樨 dup


뢠          䠩   ⠥      
(ࠧ 5.2).   ᢮   㭪樨 close   䠩-
 ਯ஢  ᢮ ,  -뢮   ଠ쭮  -
   㣮 ਯ,    ਬ.  ⭮, -
  "" ਯ 䠩 ⠭⭮ 뢮 (䠩 ਯ-
 1),    ,    祭,    ⥬  ᬠਢ
 䠩  ⢥ 䠩 ⠭⭮ 뢮.   7 㤥 ।⠢
  ॠ᪨  ਬ  ᯮ짮 㭪権 pipe  dup  ᠭ
ᮡ⥩ ॠ樨  .





                                    111

        5.14     

    ᪨  ⮨  ᪮쪨 ᪨ ࠧ,   
ࠧ ᪮ ࠩ஬, 祬  ࠧ ᮮ⢥ 䠩 ன-
⢠, 騩 । .     ࠧ, -
 ᮮ⢥騩 䠩 ன⢠  ⥬     ⥭    ⮣
"䠩", ।⠢  ᥡ   ᫥⥫쭮 ᪮ . 
⢨    ⠫ ᬠਢ   10.  ᪠ -
 ᮤঠ  䠩 ⥬,    砫쭮 -
㧪, 㯥࡫, ᯨ᪠ ᮢ  ଠ樮   (.    2).
⥬  㭪 mount (஢) 뢠 䠩 ⥬  㪠-
 ࠧ  ᪥  饩 娥 䠩  ⥬,    㭪
umount  (஢)  몫砥  䠩  ⥬    娨. 㭪
mount, ⠪ ࠧ,  짮⥫       
᪮  ࠧ   䠩 ⥬,     ᫥⥫쭮 -
 .
    ⠪ 맮 㭪樨 mount:
    mount(special pathname,directory pathname,options);

 special pathname -  ᯥ樠쭮 䠩  ன⢠,  ᮮ⢥饣
᪮  ࠧ  㥬 䠩 ⥬, directory pathname - -
⠫  饩 娨,    㤥  ஢  䠩  ⥬
(㣨 ᫮, 窠   ஢),  options 㪠뢠, ᫥-
    ஢  䠩 ⥬ "⮫쪮  ⥭" ( ⮬  
믮

 + - - - - - - - - - - - - - - - - - - - - - - - - +
                               /
 |                             |                   |
           +----------------+--+-------------+        ୥
 |         |                |                |     |  䠩
          bin              etc              usr       ⥬
 |         |                |                -     |
     +-----+-----+     +----+----+           -
 |   |     |     |     |         |           -     |
    cc    date   sh   getty   passwd         -
 + - - - - - - - - - - - - - - - - - - - - - - - - +
                                             -
               + - - - - - - - - - - - - - - - - - - - - - - - - +
                                             /
               |                             |                   |
                 +----------------+--+-------------+
   ⥬   |         |                |                |     |
   ࠧ             bin            include            src
         |         |                |                |     |
   /dev/dsk1       +-----+-----+          |                |
               |   |     |     |          |                |     |
                  awk  banner  yacc    stdio.h            uts
               + - - - - - - - - - - - - - - - - - - - - - - - - +

    㭮 5.22. ॢ 䠩 ⥬   ᫥ 믮 㭪樨 mount

⠪ 㭪樨,  write  creat,  ந   䠩  -
⥬). ਬ, ᫨  뢠 㭪 mount ᫥騬 ࠧ:

    mount("/dev/dsk1","/usr",0);

  ᮥ 䠩 ⥬, 室  ᪮ ࠧ  
"/dev/dsk1",  ⠫ "/usr"  饬 ॢ  䠩  ⥬  (.

                                    112

㭮 5.22).  "/dev/dsk1"   ᯥ樠 䠩, .. 
   ன⢠ 筮 ⨯, 筮  ࠧ  ᪥.  ।-
,  ࠧ  ᪥  㪠  ᮤন 䠩 ⥬ 
㯥࡫, ᯨ᪮ ᮢ  ୥ ᮬ. ᫥ 믮  㭪樨
mount      ᬮ஢  䠩  ⥬    
"/usr".     䠩  ஢ 䠩  ⥬
  ஢   䠪,  ⥬  ᮥ. 쪮 ⥬
㭪 link ஫ 䠩 ⥬, ⠪   ᨨ V  ࠧ-
 裡  䠩, ਭ騬 ࠧ 䠩 ⥬ (.  ࠧ
5.15).
     ন ⠡ ஢  ﬨ   ஢
䠩 ⥬.    ⠡ ஢ ᮤঠ:
  *  ன⢠, 騩 ஢ 䠩 ⥬ (㯮-
      ᪨  䠩 ⥬);
  * 㪠⥫  ,  室 㯥࡫ 䠩 ⥬;
  * 㪠⥫  ୥  ஢  䠩  ⥬  ("/"  
    䠩 ⥬   "/dev/dsk1"  㭪 5.22);
  * 㪠⥫    ⠫, ⠢襣 窮 ஢ ( 㭪
    5.22  ⠫ "usr", ਭ騩 ୥ 䠩 ⥬).
      窨 ஢  ୥ ᮬ ஢  䠩-
  ⥬,     १ 믮 ⥬ 㭪樨 mount,
      娨 䠩 ⥬   -
祭  짮⥫ ⥫ ᢥ.

    +------------------------------------------------------------+
    |  mount                                             |
    | 室 ଠ:   筮 ᯥ樠쭮 䠩       |
    |                       ⠫ 窨 ஢       |
    |                      樨 ("⮫쪮  ⥭")           |
    | 室 ଠ:                            |
    | {                                                          |
    |     ᫨ (짮⥫   㯥௮짮⥫)     |
    |           (訡);                              |
    |        筮 ᯥ樠쭮 䠩 (- |
    |       namei);                                          |
    |     ஢ ⨬ 祭 ࠬ஢;            |
    |         ⠫,  ந   |
    |      ஢ ( namei);                        |
    |     ᫨ (   ᮬ ⠫  稪 |
    |      뫮  祭 > 1)                            |
    |     {                                                      |
    |          ᢮  ( iput);               |
    |           (訡);                              |
    |     }                                                      |
    |      ᢮   ⠡ ஢;          |
    |      楤  筮 ன⢠    |
    |       ࠩ;                                     |
    |      ᢮   ୮ ;            |
    |      㯥࡫  ᢮ ;                   |
    |     ந樠஢  㯥࡫;                   |
    |      ୥  㥬 ⥬ ( |
    |      iget), ࠭   ⠡ ஢;          |
    |     ᤥ    ⠫  ⮬,  ⠫  |
    |       窮 ஢;                         |
    |     ᢮  ᯥ樠쭮 䠩 ( iput);  |
    |      ஢   ⠫ 窨 ஢;|
    | }                                                          |
    +------------------------------------------------------------+
        㭮 5.23.  ஢ 䠩 ⥬

                                    113


      㭪  5.23     ஢ 䠩 ⥬. 
 ஢  ஢ 䠩 ⥬ ⮫쪮 ⥬ ᠬ,
楬    㯥௮짮⥫.  ।⠢  
믮  㭪樨 mount  umount ᥬ 짮⥫ ਢ   ᥭ 
 ஭ 堮  ࠡ 䠩 ⥬,  諥, ⠪  襬-
 १⮬ ஦.  㯥௮짮⥫    ࠧ  ⥬
⮫쪮 砩.
      室  ᯥ樠쭮 䠩, ।⠢饣 䠩 -
,  ஢,  訩    訩  ,  
  ᮮ⢥騩 ᪮ ࠧ,  롨ࠥ  ⠫,
 ஬ 䠩 ⥬ 㤥 ᬮ஢. 稪 뫮    -
⠫   祭,  ॢ饥 1 (  1    
-  祬?),   裡  稥 ⥭樠쭮   䥪⮢ (.
ࠦ 5.27). ⥬  砥 ᢮   ⠡  ஢-
,  砥   ᯮ짮  ᢠ 祭   -
ன⢠  ⠡. 㪠 祭  ந  ,  -
  뢠騩    ਮ⠭, ᫥ 楤 
ன⢠  뢠 㯥࡫ 䠩 ⥬,    㣮    ⥬
६ ⠫  ᬮ஢ 䠩 ⥬. ⨢  ᯮ짮-
      ⠡ ஢,   ᪠ ᯮ짮  
맮 㭪樨 mount   ⮩   ⠡.   ன-
⢠  㥬 ⥬,   ९⢮ ୮  -
஢   ⮩  ⥬ 㣨 ᠬ, ஥,   -
,   ਢ  ।᪠㥬 ᫥⢨ (. ࠦ 5.26).
      뢠  楤    筮 ன⢠, ᮤঠ饣
䠩 ⥬, 筮 ⠪ ,      ।⢥ -
⨨ 筮 ன⢠ ( 10). 楤   ன⢠  筮
஢  ⢮  ⠪  ன⢠,  ந 樠
  ࠩ  뫠  樠樨  .  ⥬
  뤥   ୮ 㫠 ᢮  (ਠ ⬠ getblk)
 ࠭ 㯥࡫ 㥬 䠩 ⥬  뢠  㯥࡫,
ᯮ    ਠ⮢ ⬠ read.  ࠭ 㪠⥫  -
 ⠫,  ஬  ⥬,      ⠬
᪠  䠩  ,  ᮤঠ  "..", ᥪ  ஢,
  㢨 .  室 ୥  㥬 䠩  -
⥬   㪠⥫    ⠡ ஢.  窨 ७
짮⥫,  (窠) ஢  ७ 䠩 ⥬ ᪨
,   稢  ⭮   ⢮-
       ⠡ ஢.     -
   ⠫ - 窨 ஢.
     樠   㯥࡫ 䠩 ⥬,    
ᯨ᪠  ᢮      ᯨ᪠ ᢮ ᮢ  ⠭ ᫮
᢮ ᮢ  㯥࡫ ࠢ 0.  樠樨  (  -
砫  祭  )    ᢥ   ᭮ ࠧ
䠩 ⥬, ᫨ ஢ ⢫ ᫥ ਩ -
 ࠡ ⥬. ᫨  ⠢ 㬠,   㯥࡫ 
᢮ ,   ਢ   ⬠ ialloc, 饣  -
  ᪥ ᢮ ᮢ.  ᮦ, ᫨ ᯨ᮪ ᢮ ᪮
  ᯮ祭,    ࠢ  ᯨ᮪  (. ࠧ 5.17 
ᮯ஢ 䠩 ⥬). ᫨ 짮⥫  䠩 -
 ⮫쪮  ⥭,  ஢  権      ⥬,
 ⠭  㯥࡫ ᮮ⢥騩 䫠. ,  砥
 ⠫  " ஢", ⮡ 㣨   -
 뫠  .  㭪 5.24 ।⠢  ࠧ  -
  襭 믮 㭪樨 mount.




                                    114

        5.14.1 祭 祪 ஢    ᪠  䠩

     ୮ ᬮਬ  ⬮ namei  iget  ,
   ᪠ 䠩 室 १  ஢.  -
஢    ᯮᮡ:  䠩 ⥬,  ந-
 ஢,  䠩 ⥬,   (  ࠢ  
쭮    ),   ⭮ ࠢ.  ᯮᮡ -
 ᫥ ᫥⥫쭮  shell'.

     ᮢ            ஢
  +------------------+        +--------------------+
  +------------------+        |                    |
  |  ⠫, + - - +  |                    |
  |  ந |        |                    |
  |   ஢   |     |  |                    |   +-------+
  | 祭  "-|<---+   |                    |+->|  |
  |  ஢" |    ||  |                    ||  +-------+
  | 稪 뫮 =1|    |   |                    ||
  +------------------+    |+ >+--------------------+|
  |                  |    |   |      㯥࡫  ---++
  +------------------+    +---+  窨 -|
  |  ன⢠|        |       ஢      |
  |   ᯮ |    +---+-  ୥   |
  | 稪 뫮 =0|    |   +--------------------+
  +------------------+    |   |                    |
  +------------------+<---+   |                    |
  |   -|        |                    |
  | 㥬 䠩|        |                    |
  |      ⥬     |        |                    |
  | 稪 뫮 =1|        +--------------------+
  +------------------+
  +------------------+

       㭮 5.24.   ᫥ ஢


    mount /dev/dsk1 /usr
    cd /usr/src/uts
    cd ../../..
      mount ᫥ 믮  ᪨ ஢ப ᪠-
 ⥬ 㭪 mount,   䠩 ⥬   ᪮
ࠧ    "/dev/dsk1"  ࠢ ⠫ "/usr". ࢠ  -
 cd (ᬥ ⠫) 㦤   shell  맢  -
⥬  㭪  chdir,  믮 ,     ᪠,
ᥪ饣  ஢  "/usr".     cd  ਢ  
⮬,      ᪠  ᥪ  ஢ 
쥩  ".." .
      祭 窨 ஢  ࠢ  䠩 -
⥬,   ந ஢,  䠩 ⥬,  -
, ᬮਬ 䨪 ⬠ iget (㭮 5.25),   筠
ᨨ  ⬠, ਢ  㭪 4.3,   ᥬ,  ᪫祭
⮣,    䨪樨 ந ஢ઠ,    -
ᮬ 窨 ஢. ᫨   ᮮ⢥  ,  
ᮣ蠥,      窨 ஢.  㦨  ⠡
஢   㪠 ᮬ 窨 ஢   -
 ன⢠ 㥬 䠩 ⥬. ⥬, ᯮ  ன-
⢠    , 饣   䠩 ⥬,   頥
  


                                    115

    +------------------------------------------------------------+
    |  iget                                              |
    | 室 ଠ:     䠩 ⥬      |
    | 室 ଠ: ஢                 |
    | {                                                          |
    |   믮                                                |
    |   {                                                        |
    |     ᫨ (  ᭮ )                         |
    |     {                                                      |
    |       ᫨ ( ஢)                           |
    |       {                                                    |
    |         ਮ⠭ ( ᢮ );         |
    |         த;    /* 横  ᫮ த */   |
    |       }                                                    |
    |       /* ᯥ樠쭠 ࠡ⪠  祪 ஢ */   |
    |       ᫨ (  ᮬ 窨 ஢)   |
    |       {                                                    |
    |            ⠡ ஢  窨 - |
    |          ஢;                                        |
    |            䠩 ⥬  ⠡   |
    |          ஢;                                     |
    |         ᯮ짮     ᬮ;    |
    |         த;      /* த 横 */           |
    |       }                                                    |
    |       ᫨ (  ᯨ᪥ ᢮ ᮢ)            |
    |           ᯨ᪠ ᢮ ᮢ;               |
    |       㢥 稪 뫮  ;                |
    |        ();                                 |
    |     }                                                      |
    |                                                            |
    |     /*    ᭮  */              |
    |         ᯨ᪠ ᢮ ᮢ;      |
    |         䠩 ⥬;             |
    |        ன -।,   ;|
    |        ᪠ ( bread);               |
    |     樠஢  (ਬ, ⠭ 稪   |
    |      뫮  1);                                          |
    |      ();                                   |
    |   }                                                        |
    | }                                                          |
    +------------------------------------------------------------+

    㭮 5.25.  䨪 ⬠ 祭 㯠   -
                   


㥬  ன⢠    頥  室  㭪樨  . 
ࢮ ਬ ᬥ ⠫  頥   ⠫  "/usr"  
䠩  ⥬,    ன  ந ஢, 㦨, 
    "窠 ஢", 室  ⠡ ஢-
   㥬 䠩 ⥬  頥  ⮬ .
     ண  祭 窨 ஢  ࠢ   䠩-
 ⥬,  ,  䠩 ⥬,  믮 -
஢, ᬮਬ 䨪 ⬠ namei (㭮 5.26).  宦
   ⬠, ਢ  㭪 4.11. , ᫥ 㦥
 ⠫       ᪠   ஢,
 㪠뢠     ,   ୥  䠩 -
.  ᫨   ⠪  ᫨ ⥪騩 ࠡ稩  ⠪   ୥, 


                                    116

    +------------------------------------------------------------+
    |  namei /* ॢ饭   ᪠   */|
    | 室 ଠ:    ᪠                       |
    | 室 ଠ: ஢                 |
    | {                                                          |
    |    ᫨ ( ᪠  砫  )                 |
    |         ࠡ稩  =   ( iget);    |
    |     ⨢ 砥                                      |
    |         ࠡ稩  =  ⥪饣 ⠫         |
    |          ( iget);                                  |
    |                                                            |
    |    믮 (  ᪠  稫)                |
    |    {                                                       |
    |          ᫥    ᪠;    |
    |         ஢ ᮮ⢥⢨ ࠡ祣  ⠫   |
    |           ࠢ 㯠;                                  |
    |         ᫨ (ࠡ稩  ᮮ⢥   -  |
    |            "..")                                 |
    |              த;  /* 横  ᫮ த */|
    |   :                                         |
    |          ⠫ (ࠡ稩 ),  -   |
    |           bmap, bread  brelse;                       |
    |         ᫨ ( ᮮ⢥   ⠫   |
    |          (ࠡ祬 ))                                |
    |         {                                                  |
    |                  ᮢ襩 -|
    |               ;                                          |
    |              ᫨ (   ᮬ - |
    |                 ࠡ稩   ᮬ   |
    |                  "..")                       |
    |              {                                             |
    |                /* 祭 窨 ஢ */        |
    |                   ⠡ ஢   |
    |                 ࠡ祣 ;                          |
    |                ᢮ ࠡ稩  ( iput);  |
    |                ࠡ稩  =  窨 ஢;|
    |                ஢  窨 ஢;    |
    |                㢥 祭 稪 뫮  ࠡ- |
    |                 稩 ;                                |
    |                ३    ( "..");     |
    |              }                                             |
    |              ᢮ ࠡ稩  ( iput);    |
    |              ࠡ稩  =    ஬      |
    |               ( iget);                             |
    |         }                                                  |
    |          ⨢ 砥  /*       |
    |                                ⠫ */                 |
    |               ( );                     |
    |    }                                                       |
    |     (ࠡ稩 );                            |
    | }                                                          |
    +------------------------------------------------------------+

    㭮 5.26.  䨪  ⬠ ᨭ⠪᪮ 
                    䠩


  ᪠,  ᢮ ।,   "..",   
      ஢.  室  ⠡ ஢ ,

                                    117

 ன⢠  ன ᮢ  ஬ ன⢠  ᫥  
  ᮢ,  砥     ⠫,  ஬ ந
஢,  த     "..", ᯮ  ⮫쪮
  祭   ⢥ ࠡ祣.  ୥ 䠩 ⥬, ⥬ 
, ୥ ⠫  "..".
     襯ਢ ਬ (cd "../../..") ।,     砫
  ⥪騩 ⠫   "/usr/src/uts".    ᪠
࣠    ⬥ namei, 砫 ࠡ稬 ᮬ 
 ⥪饣 ⠫.   ⥪騩 ࠡ稩    -
   "/usr/src"  १ ஢ ࢮ   ".."  
  ᪠. ⥬     ".."   -
 ᪠, 室 ୥  ᬮ஢ (। ⨬) 䠩 -
⥬  -    ⠫  "usr" -    ࠡ稬 ᮬ  
   ⬠ namei. ,  ஢뢠    -
  ".."       ᪠.  㦨,    
".." ᮢ  ஬ ୥ , ࠡ稬 ᮬ  ୥-
 ,  ".."  ⥪饩 ⮩   ᪠.   -
室      ⠡  ஢,  ᮮ⢥ 窥 ஢
"usr", ᢮ ⥪騩 ࠡ稩  (७ 䠩 ⥬,  ᬮ-
஢    ⠫ "usr")  砥  窨 ஢ (⠫
"usr"  ୥ 䠩 ⥬)  ⢥  ࠡ祣 . ⥬
 ᬠਢ   ⠫ 窨 ஢ "/usr"  ᪠ -
 ".."  室     䠩 ⥬ ("/"). ᫥ -
 ⥬ 㭪 chdir 蠥  筮, 뢠騩   -
頥    䠪,   ᥪ  ஢.


        5.14.2 ஢ 䠩 ⥬

    ⠪ 맮 ⥬ 㭪樨 umount:
    umount(special filename);

 special filename 㪠뢠 㥬 䠩 ⥬.   -
஢ 䠩 ⥬ (㭮 5.27)  頥   -
  ன⢠,  ⠭  ன⢠  ᯥ樠쭮 䠩,
᢮  ( iput)  室  ⠡ ஢  
஬ ன⢠, ࠢ  ன⢠  ᯥ樠쭮 䠩.  ०
祬    ⢨⥫쭮   䠩 ⥬,   㤮⮢-
  ⮬,   ⥬  ⠫ ᯮ㥬 䠩,  ⮣  
ᬠਢ  ⠡  ᮢ  ᪠  䠩, 祩  ன⢠
ᮢ  ஬ 㥬 ⥬. ⨢ 䠩 ᮮ⢥ -
⥫쭮 祭 稪 뫮     ᫮  室  ⥪騩  ⠫
,  䠩  ࠧ塞 ⥪⮬,  ᯮ  ⥪騩 
( 7),   - 䠩,  ⮬   뫨  .  ᫨
-  䠩   䠩 ⥬ ⨢, 㭪 umount 蠥
㤠筮: ᫨   諠 ᯥ譮, ⨢ 䠩 ᤥ   -
묨.
          ᮤন   "⫮ ",  ९-
ᠭ  , ⮬  "뢠"   ୮ 㫠.    㤠
    ࠧ塞  ⥪⮬,  室  ⠡ ⥩,  
 騬 (஡   7), 뢠    -
 ᪮४஢ 㯥࡫  ४ ᪮   ᮢ,
 ॡ ⮣. , 뫮  筮 ⪮४஢  ᪮-
  ,  㯥࡫    ⮫쪮  㥬 䠩 ⥬,
  楫 ࠭ ॥⢥ 
 믮  ⢨  ᥩ ⥬  楫. ⥬  -
 ୥  ஢ 䠩 ⥬, 㤥ন  -
 ࢮ 饭    ६ 믮 㭪樨 mount,  ᪠-


                                    118

    +------------------------------------------------------------+
    |  umount                                            |
    | 室 ଠ:   ᯥ樠쭮 䠩, ᮮ⢥- |
    |                      饣 㥬 䠩 ⥬   |
    | 室 ଠ:                            |
    | {                                                          |
    |     ᫨ (짮⥫   㯥௮짮⥫)     |
    |           (訡);                              |
    |       ᯥ樠쭮 䠩 ( namei);   |
    |      訩  訩  㥬 ன-|
    |      ⢠;                                                 |
    |       ⠡ ஢   - |
    |       ⥬, 室  襣  襣 ஢;   |
    |     ᢮  ᯥ樠쭮 䠩 ( iput);  |
    |     㤠  ⠡ ⥩   ࠧ塞 ⥪- |
    |      ⮬  䠩, ਭ 䠩                |
    |      ⥬;                     /*  7 */         |
    |     ᪮४஢ 㯥࡫, , 㧨    |
    |       ;                                              |
    |     ᫨ (- 䠩  䠩 ⥬   -   |
    |      )                                           |
    |           (訡);                              |
    |       ⠡ ஢ ୥  -|
    |      ஢ 䠩 ⥬;                            |
    |     ஢ ;                                  |
    |     ᢮  ( iput);  /* iget      |
    |                                            ஢ */ |
    |      楤   ᯥ樠쭮 ன-  |
    |      ⢠;                                                 |
    |     ᤥ ⢨⥫묨 (⬥)  㫥    |
    |      㥬 䠩 ⥬;                       |
    |       ⠡ ஢  窨 - |
    |      ;                                                |
    |     ஢ ;                                  |
    |      䫠, 騩   " ஢- |
    |      ";                                                 |
    |     ᢮  ( iput);  /* iget      |
    |                                            ஢ */ |
    |     ᢮ , ᯮ㥬  㯥࡫;          |
    |     ᢮  ⠡ ஢ , ⮥ ࠭;|
    | }                                                          |
    +------------------------------------------------------------+

        㭮 5.27.  ஢ 䠩 ⥬



  ࠩ 楤  ன⢠, ᮤঠ饣 䠩  ⥬.
᫥⢨    ᬠਢ   ୮    ⢨-
⥫묨   ,   室  㥬 䠩  -
;    ࠭  ଠ樨        室.
  ⢨⥫묨,  ⠢   砫 ᯨ᪠  ᢮
஢,     ६    㠫쭮 ଠ樥   ୮
.  뢠    ⥬,    ந  ஢,
䫠  "窨  ஢", ⠭ 㭪樥 mount,  ᢮ -
. ⨢   ⠡ ஢ ᢮  饣 ᯮ짮-
, 㭪 umount 蠥 ࠡ.



                                    119

                                /
                                |
                               usr
                   +------------+-------------+
                   |                          |
                  src                      include
                   |                     +----+----+
                  uts                   sys    realfile.h
                   |                     -         -
                  sys --------------------         -
           +-------+-------+                       -
        inode.h        testfile.h ------------------

    㭮 5.28.     ॢ 䠩 ⥬,  易 
                    㭪樨 link


        5.15 LIN

    ⥬ 㭪 link 뢠 䠩      ⠫-
 䠩 ⥬, ᮧ  饣      -
⠫. ⠪ 맮 㭪樨 link:

    link(source file name, target file name);

  source  file  name - 饥  䠩,  target file name - 
(⥫쭮) , ᢠ 䠩  ᫥  믮  㭪樨  link.
 ⥬ ࠭   ᪠   裡, 饩  䠩,
       䠩     .   ,
   䠩    , ⮬  䠩  ᯥ-
쭮  ࠡ뢠. ਬ, ᫥ 믮  㭪権:

   link("/usr/src/uts/sys","/usr/include/sys");
   link("/usr/include/realfile.h","/usr/src/uts/sys/testfile.h");

     䠩   㪠뢠        ᪠:

"/usr/src/uts/sys/testfile.h",  "/usr/include/sys/testfile.h"   
"/usr/include/realfile" (. 㭮 5.28).

       㯥௮짮⥫ ( ⮫쪮 ) 뢠 ⠫, -
 ᠭ ணࠬ, ॡ 祭 ॢ 䠩 ⥬. -
   뫮 ࠧ襭 ந쭮 짮⥫, ணࠬ,  ᥪ-
騬     䠩, 諮    ⮬, ⮡ 
  ᪮ 横  ⮬ 砥, ᫨ 짮⥫ 易 ⠫  
設, 饩   娨. ।,  㯥௮짮⥫ -
 ஦  㪠 ⠪ 痢.  뢠  ᮡ -
⠫  뫠 ন  ࠭  ⥬, ⠪   -
 ॡ  ॠ樨  mkdir,  ᮧ  -
. 祭 㭪樨 mkdir ࠭ 室  뢠 ⠫.
      㭪  5.29   㭪樨 link. 砫 , ᯮ
 namei, । ⮭宦  室 䠩, 㢥-
 祭 稪 痢  , ४ ᪮  
( ᯥ祭 ᮣᮢ)  ᭨   ஢. ⥬ 
 䠩   ; ᫨  , 㭪 link 蠥  -
筮      ⠭ ० 祭 稪 痢, 
࠭.  ⨢ 砥  室  த⥫᪮ ⠫ ᢮ -
  䠩   , 뢠          
室 䠩  ᢮  த⥫᪮ ⠫, ᯮ -

                                    120

    +------------------------------------------------------------+
    |  link                                              |
    | 室 ଠ:  饥  䠩                |
    |                        䠩                       |
    | 室 ଠ:                            |
    | {                                                          |
    |       饣  䠩 ( |
    |     namei);                                                |
    |    ᫨ ( 䠩 ᫨誮  痢  ந     |
    |     뢠 ⠫  ࠧ襭 㯥௮짮⥫)  |
    |    {                                                       |
    |        ᢮  ( iput);                  |
    |         (訡);                                |
    |    }                                                       |
    |    㢥 祭 稪 痢  ;           |
    |    ⪮४஢ ᪮  ;                |
    |     ஢  ;                             |
    |      த⥫᪮ ⠫  祭 -|
    |       䠩 ( namei);                     |
    |    ᫨ (䠩    㦥   - |
    |     騩 䠩   䠩 室  ࠧ 䠩 - |
    |     ⥬)                                                 |
    |    {                                                       |
    |        ⬥ ४஢, ᤥ ;             |
    |         (訡);                                |
    |    }                                                       |
    |    ᮧ   த⥫᪮ ⠫  䠩  -  |
    |      :                                            |
    |                - |
    |         饣 䠩;                                        |
    |    ᢮  த⥫᪮ ⠫ (      |
    |     iput);                                                 |
    |    ᢮  饣 䠩 ( iput);  |
    | }                                                          |
    +------------------------------------------------------------+

              㭮 5.29.  뢠 䠩


  iput.  ᪮ 䠩    ࠭  ⢮, ᢮
 -   㦭. , ᢮   室  䠩,
  祭:  稪  痢    祭,  1 襥,
祬  祭, ஥ 稪  । 맮 㭪樨,   饭  
䠩  ⥯    ந       䠩 ⥬.
稪 痢 ࠭ ⢮ ᥩ  ⠫,  ()  㪠-
뢠  䠩,  ⥬ ᠬ ⫨砥  稪 뫮  . ᫨ 
襭  믮  㭪樨 link  䠩  饭  ஭ 㣨
ᮢ, 稪 뫮   ਭ 祭, ࠢ 0,   稪
痢 - 祭, 襥  ࠢ 2.
    ਬ, 믮 㭪, 맢 :
    link("source","/dir/target");

  㦨      䠩  "source", 㢥稢   祭
稪 痢,   , ᪠ 74,   ᭨    
஢.   ⠪ 室  ⠫ "dir", 饣 த⥫-
᪨ ⠫  䠩 "target",  ᢮   ⠫  "dir"  
뢠      䠩 "target"    74.  砭 
⢨  ᢮  䠩 "source"   iput. ᫨  -
祭 稪 痢 䠩 "source" ࠭ 뫮 ࠢ 1,  ⥯  ࠢ-

                                    121

 2.
    ⮨ 㯮   㯨 ,  稭 ⮣, 
 ᭨   室 䠩 ஢ ᫥ 㢥祭 -
  稪 痢. ᫨    ᭨   ஢,  -
, 믮騥 ६ ᫥騥 㭪樨:

     A:       link("a/b/c/d","e/f/g");
     B:       link("e/f","a/b/c/d/ee");

諨   㯨 ( ஢). ।,   A 㦨
 䠩 "a/b/c/d"   ᠬ ,   B 㦨  
䠩 "e/f". ࠧ "   ᠬ " 砥,  ⥬ ⨣
ﭨ,   ஬   稫 ᪮ . (㭮 5.30
 ⠤ 믮 ᮢ.)   ⥯  A -
   䠩 "e/f",  ਮ⠭  ᢮  믮    
,    䠩 "f"  ᢮.    ६  B ⠥
  ⠫ "a/b/c/d"  ਮ⠭    ᢮-
   䠩 "d".  A 㤥 㤥ন ஢ ,
㦭  B,   B,  ᢮ ।, 㤥 㤥ন  -
  , 㦭  A.  ࠪ⨪  ᪨ ਬ -
 ஢   ⮬,   ᢮   -
室 䠩 ᫥ 㢥祭 祭 稪 痢. ᪮  
ᮢ () ᢮  饭  ᫥饬 ,  -
஢  ந室.
    騩  ਬ 뢠,       㯨, ᫨
   뫠  ஢.    ⠪ -
 ᠬ ᥡ. ᫨  뢠 㭪:

    link("a/b/c","a/b/c/d");

  砫 ⬠  砥   䠩 "c"; ᫨    ᭨-
    ஢,  襫   㯨, ᨢ   "c"
  ᪥ 䠩 "d". ᫨   ,    ,  
த ᢮ 믮 -  ஢  (  ᠬ஢),
    १  ந諮   ⥬ ? ᪮   ⥬
ᠬ,  ।⠢ ⥬    筮  ६,  祭
ᨣ      稭  ᮬ ᢮ ࠡ (
7). ⥫쭮, ⥬     㯨  १㧪. ᫨ 
䠩, ஢ ᠬ,  饭  ஭ 㣨  -
ᮢ,   ஢  ࠣ ⠫   ⥬. -
,  ,
⨢訥  ⨬ 䠩 ( ⨢訥  㣨 䠩 १  -
஢ ⠫), ६   㯨.  ࠧ, ᫨ -
  䠩  "/bin"    "/usr/bin"  (  ࠭  )   䠩
"/bin/sh" (  shell), ᫥⢨  ⥬  -
묨.


        5.16 UNLIN

    ⥬ 㭪 unlink 㤠  ⠫  室  䠩. -
⠪ 맮 㭪樨 unlink:

    unlink(pathname);

 pathname 㪠뢠  䠩, 㤠塞  娨 ⠫. ᫨ -
 ࠧ뢠   䠩  ⠫   㭪樨 unlink,  
㪠  맮 㭪樨  䠩  㤥 㯥,   ⠫ 


                                    122

              A                           B
    +-------------------------------------------------------------
    |            -                       ⠥  
    |            -                             䠩 "e"
    |            -                        -  䠩
    |            -                           "e" ஢
    |  砥   "a"                      -
    |  ᢮  "a"                       -
    |  砥   "b"                      -
    |  ᢮  "b"                       -
    |  砥   "c"                      -
    |  ᢮  "c"                       -
    |  砥   "d"                      -
    |                                               -
    |  ⠥                       -
    |           "e"                              -
    |   -  䠩                    -
    |     "e" ஢                          -
    |            -                                  -
    |      +-----------------------------------------------+
    |      |   믮 -  䠩 "e"  |
    |      |                ࠧ஢                  |
    |      +-----------------------------------------------+
    |            -                        砥   "e"
    |            -                        ᢮  "e"
    |            -                        砥   "f"
    |            -                        砥   "a"
    |            -                        ᢮  "a"
    |            -                                  -
    |            -                                  -
    |            -                       ⠥  
    |            -                             䠩 "d"
    |            -                        -  䠩
    |            -                           "d" ஢
    |            -                              ᮬ A
    |            -
    |  砥   "e"
    |  ᢮  "e"
    |  ⠥  
    |           "f"
    |   -  䠩
    |     "f" ஢
    |        ᮬ B
    |              +-------------------------------+
    |              |  㯨 ( ஢)  |
    v              +-------------------------------+
  ६

    㭮 5.30.    ஢  ᮢ  믮
                   㭪樨 link

ᮧ       ⨬ . ਬ,  믮 ᫥饣
ࠣ ணࠬ:

    unlink("myfile");
    fd = open("myfile",O_RDONLY);

㭪 open  㤠筮, ᪮    믮   ⥪-
饬 ⠫   㤥 䠩   myfile. ᫨ 㤠塞  -

                                    123

 ᫥  䠩  ⠫,   ⮣ ᢮  -
樮   䠩. , ᫨  䠩 뫮 ᪮쪮 痢,  -
   㯭  㣨 .
     㭪 5.31 ।⠢  㭪樨 unlink. 砫   ᪠
䠩   㤠塞   ᯮ 䨪 ⬠ namei, -
   䠩 頥  த⥫᪮ ⠫.   -
頥    䠩  , ᯮ  iget. (ᮡ 砩,
易  㤠  䠩 ".", 㤥 ᬮ७  ࠦ). ᫥
஢ન ⢨ 訡  ( ᯮ塞 䠩)  㤠    ⠡
⥩ ᥩ  ⨢ ࠧ塞 ⥪⮬ ( 7)  ࠥ 
䠩    த⥫᪮  ⠫: ᤥ 祭   ࠢ 0
筮  ⪨ ,   䠩  ⠫. ⥬ -
 ந ᨭ஭  ⠫  , ࠭ ⥬ ᠬ,  
  ᢮  ०    䠩  㦥  㤥 㯥, 㬥蠥 祭
稪 痢    ⬠ iput ᢮     -
⥫᪮ ⠫  䠩  㤠塞 .
      ᢮       iput  䠩  㤠塞
, ᫨ 祭 稪 뫮  稪 痢  ⠭  ࠢ묨
0,  ࠥ  䠩 ⭮ ᪮ ,   .  
    㪠뢠    䠩    ⨢. 

    +------------------------------------------------------------+
    |  unlink                                            |
    | 室 ଠ:   䠩                             |
    | 室 ଠ:                            |
    | {                                                          |
    |     த⥫᪨   䠩  㤠塞      |
    |      ( namei);                               |
    |    /* ᫨  ⢥ 䠩 㯠 ⥪騩 ⠫... */|
    |    ᫨ (᫥ ⮩  䠩  ".")   |
    |         㢥 祭 稪 뫮  ;      |
    |     ⨢ 砥                                      |
    |            䠩  㤠塞  (-|
    |           iget);                                       |
    |    ᫨ (䠩  ⠫,  짮⥫  - |
    |      㯥௮짮⥫)                               |
    |    {                                                       |
    |         ᢮  ( iput);                |
    |          (訡);                               |
    |    }                                                       |
    |    ᫨ (䠩  ࠧ塞 ⥪  ⥪饥 祭   |
    |     稪 痢 ࠢ 1)                               |
    |         㤠   ⠡ ⥩;                |
    |     த⥫᪮ ⠫: 㫨    㤠-|
    |     塞 裡;                                          |
    |    ᢮  த⥫᪮ ⠫ (      |
    |     iput);                                                 |
    |    㬥 ᫮ 痢 䠩;                           |
    |    ᢮  䠩 ( iput);                |
    |         /* iput ஢, ࠢ  ᫮ 痢 0, ᫨   |
    |          * ,                                             |
    |          * ᢮  䠩 ( free)        |
    |          * ᢮  ( ifree);            |
    |          */                                                |
    | }                                                          |
    +------------------------------------------------------------+

       㭮 5.31.  㤠 裡 䠩  ⠫


                                    124

⮣, ⮡  ᪮ ,   横 ᬠਢ  ⠡  -
ন , ᢮   אַ 樨  ( ᮮ-
⢨    ⬮ free).  ᠥ  ᢥ 樨, 
᢮  , 騥  ࠧ ஢ ᢥ, ४-
ᨢ, 祬   । ᢮    訬  ஢.  
     ⠡ ᮤন   ⠭ ࠧ
䠩   ࠢ 0. ⥬  頥    ⨯ 䠩, 㪠-
뢠 ⥬ ᠬ,   ᢮,    ᢮      
ifree.      室 ४  ᪥, ⠪  ᪮ 
   㪠뢠  ,   ᯮ; ⥯  ᢮-
  祭 㣨 䠩.


        5.16.1 ⭮ 䠩 ⥬

     뫠 ᢮      ⮣,  ⮡  ᢥ    
᭮  ᪠  䠩  ⥬   砥 ⥬ ᡮ. ਬ,
  㤠  䠩  த⥫᪮ ⠫,  ᨭ஭  -
뢠  ⠫   - । ⥬,  㭨⮦ ᮤন 䠩  -
  . ᫨ ⥬  ᡮ  ⮣,  ந諮  㤠
ᮤন 䠩,  䠩 ⥬ 㤥 ᥭ :  
ᮢ  㤥  ᫮ 痢,  1 ॢ饥 ᫮ ᥩ  ⠫-
,  뫠   ,   ⠫    ⥩  ᪠
䠩  ⠭ ⨬묨. ᫨     뫠 ᤥ ᨭ஭,
窠 室  ⠫  ᪥ ᫥ ⥬ ᡮ  㪠뢠  ᢮-
 ( ७祭) .  ࠧ, ᫮ ᥩ  ⠫
 ᪥,  뫠  , ॢᨫ  祭 稪 뫮
 .  ⭮, ᫨  䠩 뫮   ᫥  裡  䠩,
    㪠뢠    祭 .  뢠 ᮬ,  
ࢮ 砥 , ᨬ ⥬,  쥧   ࠭ (.
ࠧ 5.18).

    ।, ਬ,   䠩   裡   "a"    "b",
   - "a" - ࠧ뢠 ᮬ   㭪樨 unlink. ᫨
 뢠  ᪥ १  ᢮ ⢨,  ,  -
  室  ⠫  䠩 "a",    ᠬ  ᪥. ᫨ ⥬
 ᡮ ᫥ 襭  १⮢  , ᫮ 痢   䠩
"b"  㤥 ࠢ 2,  䠩 "a" 㦥  㤥 ⢮, ᪮ ०
   뫠 饭 । ᡮ ⥬.  "b", ⠪ ࠧ,  -
   ,  ᫥ १㧪 ᫮ 痢 ⠭ 
⥬ 㤥 ࠡ 騬 ࠧ.
      ।,   뢠   १ ᢮ -
  ⭮ 浪  ⥬  ᡮ:  ,  㬥訫 祭
稪 痢  䠩 "b", ᤥ  ࠢ 1, ᠫ    
    ᡮ  । ⥬,    ⠫  室  䠩 "a".
᫥ १㧪 ⥬   䠩 "a"  "b"  ᮮ⢥ -
  ⢮,  稪 痢  ⮣  䠩,      
㪠뢠,  㤥    祭  1.  ᫨  ⥬   㭪
unlink  䠩 "a", 祭 稪 痢 ⠭ ࠢ 0, ᬮ  
,   䠩 "b" 뫠    . ᫨   ७
  १ 믮 㭪樨 creat, 稪 痢   䠩-
 㤥  祭, ࠢ 1,   䠩  뫠   
᪠. ⥬   ࠢ ,  ਡ     ணࠬ
ᮯ஢ (fsck, ᠭ  ࠧ 5.18),   䠩 -
⥬ १   ப 䥩.
     ⮣, ⮡ ᢥ   ᭮ ᪠ 䠩 ⥬ 
砥  ⥬  ᡮ,   ᢮   ᪮  ⠪ 
ᮡ 浪.  㤠 ᮤন 䠩  ⪥     
᭠砫 ᢮ , ᮤঠ騥  䠩,   ᢮ 

                                    125

  ९ .    ,  ࠢ, ,
,  ᫨  -  । ந ⥬ ᡮ,   ࠧ-
. ।,   ᭠砫 ᢮ ᪮  ,  ਭ-
訥  䠩,   ᡮ. ᫥ १㧪 ⥬    ᮤ-
 뫪  ᪮ ,  䠩 ०   뭥    ࠭騥
⭮    䠩 ଠ.  䠩    㤮⢮-
⥫,  짮⥫  饭  䠩  ᪠ . 
᪮   ⮬    ७祭 㣨 䠩. ⮡ -
 䠩 ⥬ ணࠬ fsck, ॡ  訥 ᨫ.  -
,  ᫨  ⥬  ᭠砫  ९ᠫ   ,  ⮬  ᡮ,
짮⥫   - ᪠  䠩 ⥬ ᫥  -
㧪. ଠ樮 , ࠭ ਭ訥 䠩, ⠭ -
    ⥬,    -    ⮬ 짮⥫ 
㢨. ணࠬ fsck ⠪  뫮         ᢮訥
᫥ 㤠 裡 ᪮ ,  ந , 室
 ࢮ  ᬠਢ 砥.


        5.16.2   ७樨

        ७樨   믮 ⥬ 㭪樨 unlink 祭
, ᮡ  㤠  ⠫.  rmdir 㤠  ⠫,
㡥  ।⥫쭮  ⮬,   ⠫  䠩 ( -
뢠 ⠫  ஢ 祭 ᮢ    ⠫  -
⢮ ).  ⠪     rmdir  ᪠    짮⥫᪮
஢, ⢨  ஢થ ᮤন ⠫  㤠 ⠫ 믮-
   ⠪  ; ⥬  ४ ⥪  믮-
 㭪権 read  unlink. , ᫥ ⮣,   rmdir  㦨-
,   ⠫ , 㣮   ।ਭ  ᮧ 䠩
 ⠫ 㭪樥 creat.  ⮣ 짮⥫    ⮫쪮  ⥬
ᯮ짮  堭  墠  䠩  .   , ࠧ 
㯨  믮 㭪樨 unlink,  㣮    -
  䠩  㤠塞 , ᪮  த⥫᪮  ⠫
 䠩 ஢.
    ⨬    ࠧ    㭪樨 link  ᬮਬ,  ࠧ
⥬ ᭨   ஢  襭 믮 㭪樨.  ᫨
 㣮  㤠  䠩    ᢮,   ⥬ -
 ⮫쪮 㬥訫 祭 稪 痢; ⠪  祭 稪 -
 뫮 㢥祭 । 㤠 裡,  祭 ⠭ ⥫-
.  ⥫쭮,  䠩     㤠  ⥬ ࠡ⠥ .
  筠 ⮩,  㭪 unlink 뢠 ࠧ ᫥ -
襭 믮 㭪樨 link.
    㣮   ७樨    ⮬ 砥,     -
  ८ࠧ   ᪠ 䠩   䠩   namei, 
㣮  㤠 ⠫,  ண 室   ᪠. ⨬,
 A  ࠧ  "a/ b/c/d"  ਮ⠭  ६ -
祭   䠩 "c".   ਮ⠭  ⪥ -
    ⪥   ᪮ ,      
࠭  (.    iget  bread). ᫨  B 㦭 㤫 
 ⠫   "c",   ਮ⠭  ⮩  ᠬ 稭,
   A.   ᫥⢨    B  ࠭
 A. ० 祬  A த ᢮ 믮,  B -
,  㤠    ⠫ "c"   ᮤন  ⮩ 裡. ,
 A ⠥   饬 ,   㦥  
㤠.    namei,  ஢騩   । ࠢ⢮ 祭
稪 痢 , ᮮ  訡.
     ஢ન, ,  ᥣ 筮, ᪮   ।-
,  - 㣮  ᮧ    䠩 ⥬
  ⠫       ,  ࠭ ᯮ짮  "c".

                                    126

 A 㤥 㦤, 㬠,   ⨫  㦭  (.
㭮 5.32).     뫮, ⥬ ࠭ ᢮ 楫⭮;  ᠬ
襥,   ந,  饭   ⮬ 䠩 -   -

             A           B           C
    +------------------------------------------------------------
    |           -            䠩-       -
    |           -               ""          -
    |           -                                     -
    |           -           㦨,          -
    |           -             䠩 "c"         -
    |           -             ஢            -
    |           -           ਮ⠭          -
    |           -              믮             -
    |           -                  -                  -
    |   ᬠਢ -          -                  -
    |   ⠫ "b"  -          -                  -
    |       "c"            -                  -
    |   砥  -         -                  -
    |       "c"            -                  -
    |   㦨,           -                  -
    |     䠩 "c"          -                  -
    |     ஢             -                  -
    |   ਮ⠭           -                  -
    |      믮              -                  -
    |           -                  -                  -
    |           -           믮-        -
    |           -           ,  "c"         -
    |           -               ᢮              -
    |           -             -       -
    |           -           "c", ० -       -
    |           -           ᢮,        -
    |           -          ᫨ ᫮ 痢 =0       -
    |           -                  -                  -
    |           -                  -           砥 
    |           -                  -            䠩 "n"
    |           -                  -           砩 -
    |           -                  -             , -
    |           -                  -            ਭ訩
    |           -                  -                 "c"
    |           -                  -
    |           -                  -             筮 ⮣
    |           -                  -           ᭨ ஢
    |           -                  -               "n"
    |           -                  -
    |    믮-        -
    |   , ० -         -
    |     "c" (⥯          -
    |    "n") ᢮             -
    |   砥  "n"        -
    |   ᬠਢ -          -
    |   ⠫ "n"  -          -
    |       "d"            -
    v
  ६

    㭮 5.32.  ୨⢮ ᮢ    믮-
                    㭪樨 unlink


                                    127

    +------------------------------------------------------------+
    | #include <sys/types.h>                                     |
    | #include <sys/stat.h>                                      |
    | #include <fcntl.h>                                         |
    |                                                            |
    | main(argc,argv)                                            |
    |      int argc;                                             |
    |      char *argv[];                                         |
    | {                                                          |
    |      int fd;                                               |
    |      char buf[1024];                                       |
    |      struct stat statbuf;                                  |
    |                                                            |
    |      if (argc != 2)             /* 㦥 ࠬ */       |
    |           exit();                                          |
    |      fd = open(argv[1],O_RDONLY);                          |
    |      if (fd == -1)              /* open 訫        |
    |                                    㤠筮 */             |
    |           exit();                                          |
    |      if (unlink(argv[1]) == -1) /* 㤠   ⮫쪮  |
    |                                      䠩 */  |
    |           exit();                                          |
    |      if (stat(argv[1],&statbuf) == -1)  /* 㧭 -  |
    |                                       䠩   */ |
    |           printf("stat %s 訫 㤠筮\n",argv[1]);|
    |                              /*   ᫥  */      |
    |      else                                                  |
    |           printf("stat %s 訫 ᯥ譮!\n",argv[1]);|
    |      if (fstat(fd,&statbuf) == -1)  /* 㧭 ﭨ    |
    |                                 䠩  䨪 */ |
    |           printf("fstat %s ࠡ⠫ 㤠筮!\n",argv[1]);|
    |      else                                                  |
    |           printf("fstat %s 訫 ᯥ譮\n",argv[1]);|
    |                              /*   ᫥  */      |
    |      while (read(fd,buf,sizeof(buf)) > 0) /* ⥭ - |
    |                         ⮣ 䠩  㤠  */   |
    |           printf("%1024s",buf);   /* 뢮     |
    |                                      ࠧ஬ 1  */   |
    | }                                                          |
    +------------------------------------------------------------+

           㭮 5.33.  裡   䠩


襭  -  ᮯ୨⢠ ⠪ த  ࠪ⨪ 쭮 ।.
       㤠  䠩   ६,  㣮  -
, ⮡ 䠩 ⠢ . (  ,  㤠騩  ,  
  ᮬ, 믮訬  ⨥). ᪮  ᭨  
஢  砭 믮 㭪樨 open, 㭪  unlink  
ᯥ譮.  㤥 믮  unlink 筮 ⠪ ,  ᫨  䠩
   ,  㤠  ⠫   䠩.    㤠-
 裡  䠩  ᬮ   㣮 .  ,  ⠪
 ⥬ 㭪 open 㢥稫 祭 稪 뫮  , -
   頥 ᮤন 䠩  믮 ⬠ iput । -
 㭪樨 unlink. ⮬ , 訩 䠩,  ந  
䠩      ⢨   ਯ,  ⥭  䠩 
  䠩.    뢠 䠩, 祭 稪  뫮  
⬥  iput ⠭ ࠢ 0,   頥 ᮤন 䠩. 
, , 訩 䠩, த ࠡ ⠪,  ᫨   㭪

                                    128

unlink    믮﫠,  unlink,  ᢮ ।, ࠡ⠥ ⠪,  ᫨ 
䠩   . 㣨 ⥬ 㭪樨 ⠪   த  믮-
  , 襬 䠩.
      ਢ  㭪 5.33 ਬ  뢠 䠩, 㪠
 ⢥ ࠬ,  ⥬ 㤠  ⮫쪮  ⮣ 䠩. -
 stat  㤠筮, ᪮  ࢮ砫쭮    ᫥  unlink
  㪠뢠  䠩 (।-
,    ⥬  ६  㣮   ᮧ 䠩  ⥬ 
),  㭪 fstat  ᯥ譮, ⠪   롨ࠥ  
ਯ 䠩.  믮 横, 뢠   蠣    1024
  뫠 䠩  ⠭ 뢮.   ⥭ 㤥 㦥
 䠩,  蠥 ࠡ: ᫥ 襭  䠩 -
⠥ ⢮.   ᮧ ६ 䠩  ࠧ  㤠
    ;   த -뢮   䠩,   䠩
    娨 ⠫. ᫨   - -
 蠥 ਩,   ⠢  ६ 䠩  ᫥.

        5.17     

    ࣥ஬ 뫮  ⨥ "⨯ 䠩 ⥬"   ᭥
堭  ࠡ  ਭ襩   ⥢ 䠩 ⥬ (. ⪮
ᠭ ⮣ 堭  [Killian 84])    襩  ᨨ  ⥬  V
ন  ᭮騥  ਭ樯   奬. 稥 ⨯ 䠩
⥬    ন ६  ⢮  䠩
⥬, ⠪  ⥢ 䠩 ⥬ ( 13)   䠩 -
⥬  㣨 樮 ⥬.    饭  䠩-
 묨 㭪ﬨ ⥬ UNIX,   ⠭ ᮮ⢥⢨ 
騬  ஬ 䠩 権  ﬨ, ᯥ묨   ⨯
䠩 ⥬.

          樨 䠩       騥      䠩
               ⥬                            ⥬ ᨨ V
          +---------------+          +------+         +-------+
 V  |     open      |    +-----+-    -+-------->|       |
          |     close     |    |     +------+         +-------+
          |     read      |    | +---+-    -+---+     |       |
          |     write     |<---+ |   +------+   |     +-------+
          |       -       |<-----|---+-    -+---|---->|       |
          |       -       |      |   +------+   |     +-------+
          |       -       |      |   |      |   |     |   -   |
          |       -       |      |   +------+   |     |   -   |
          +---------------+      |   |      |   |     |   -   |
 |     ropen     |      |   +------+   |     +-------+
⥬   |     rclose    |      |   |  -   |   |
          |     rread     |      |   |  -   |   |    㤠-
          |     rwrite    |<-----+   |  -   |   |     ⥬
          |       -       |          |  -   |   |     +-------+
          |       -       |          |  -   |   |     |       |
          |       -       |          |  -   |   |     +-------+
          |       -       |          |  -   |   +---->|       |
          +---------------+          |  -   |         +-------+
          |       -       |          |  -   |         |       |
          |       -       |          |  -   |         +-------+
          |       -       |          |  -   |         |       |
          |       -       |          |  -   |         +-------+
          |       -       |          |  -   |         |   -   |
          +---------------+          +------+         +-------+

     㭮 5.34.   䠩 ⥬ ࠧ ⨯

                                    129


     㯠 䥩ᮬ  ࠪ⭮ 䠩 ⥬    -
쭮 䠩 ⥬.      ᮤন ଠ,
   ⤥쭮 䠩 ⥬,  ⠪ 㪠⥫   -
 䠩 ⥬,  㦥 ᮤন ଠ, ᯥ  .
  䠩 ⥬ ᮤন ⠪ ଠ,  ࠢ 㯠
  ᯮ  ,  騩  ᮤন  ன⢠,  -
  ᪥, ⨯ 䠩, ࠧ, ଠ    稪  뫮.
㣠 ⭠ ଠ, 뢠 ⤥ 䠩 ⥬, ᮤন-
    㯥࡫    ⠫.  㭪 5.34 ࠦ ⠡
 ᮢ     ⠡   ᮢ  ⤥  䠩
⥬,       䠩 ⥬ ᨨ V,  㣠  
㤠 (⥢) ⥬. ।,  ᫥    ᮤন
筮  ଠ樨   ⮣, ⮡ ஢ 䠩, 室騩 
㤠 ⥬.  䠩 ⥬  ⢮ ,  -
 ;  室 ⥪ ணࠬ ⤥쭮 䠩 ⥬ 
ᮧ  ꥪ  ,  㤮⢮騩 ᥬ᪨ ॡ 䠩
⥬ UNIX  騩 ᢮ "",  ᮮ⢥  饬  -
, 砥 ஬.

      ⥬  ⨯   ,  ன ࠭
 㭪権, ॠ ࠪ ⢨.   㦭 -
  䠩,  뢠 ᢥ 㭪  ᨬ    ⨯  䠩
⥬    ࠪ⭮  ⢨ (. 㭮 5.34). ਬࠬ ࠪ
⢨ : ⨥  ⨥ 䠩, ⥭   ,  -
饭      䠩 ( namei  iget), ᢮-
  ( iput), ४ , ஢ઠ ࠢ 㯠,  -
⠭ ਡ⮢ 䠩 (ࠢ 㯠  ),  ⠪ ஢  -
஢  䠩 ⥬.   13 㤥 ந஢ ᯮ짮
⥬ ࠪ権  ᬮ७ । 䠩 ⥬.


        5.18   

     ন 楫⭮ ⥬  ᢮ 筮 ࠡ.   -
, ⠪ १砩 ⥫⢠,  ⪠ ⠭,  ਢ  
⠫쭮 ᡮ ⥬,  १ ண ᮤন ⥬ 稢
᢮ ᮣᮢ: 設⢮   䠩 ⥬ 㯭  -
짮,    ᮣᮢ    . 
fsck ஢ ᮣᮢ    砥 室   䠩-
 ⥬ ࠢ.  頥  䠩 ⥬  १  
  ப  䥩  ( 10)  室 ࠤ樮 ⮤ 㯠 
䠩.  ⮬ ࠧ ᬠਢ    ਬ  ⨢稢
,  㦨  fsck.
    ᪮      ਭ   祬    ᯨ
᢮ .  䠩 ⥬ 뢠   ࠧ,   -
  室  ᯨ᪥ ᢮ .  ᪮  롨-
   ᯮ짮,  㤠    ᯨ᪠ ᢮  
砥  .    ७  ᪮    㣮
    ,    㤥 饭  ᯨ᮪ ᢮ .
 ࠧ, ᪮    室  ᯨ᪥  ᢮  -
,     祭   ᮢ. ᬮਬ ࠧ -
樨, 騥    ᢮ ஬ ᪮  ,  ਭ-
襣  䠩,  饭    㯥࡫, 室騩  -
,   뤥 ᪮   䠩. ᫨    뢠  
          䠩,  । ᥭ   
० 䠩  ᪥ ந襫 ᡮ,    ᮢ  -



                                    130

  ⮬   ᪮ .   ࠧ, ᫨   ९-
뢠     㯥࡫   ᯨ᪨ ᢮ ᮢ  । ९
ண  稫 ᡮ, ᪮   ६   ᯨ-
 ᢮ ,   ஬ .
    ᫨     ᯨ᪥ ᢮ , ⠪   䠩, 䠩-
 ⥬  ᮣᮢ, ,  㦥  ਫ  ,  
  易 - ⢮.     ந,
᫨    㤠  䠩  饭  ᯨ᮪ ᢮     -
࡫.  ᫨  ந   ० 䠩    ⥬ 
ᡮ ।  㯥࡫,  㤥  ⢮      ᯨ᪠,
࠭  ᪥.
       稪 痢  㫥 祭  ⮬,  
    ⠫ 䠩 ⥬.  䠩,  ᪫-
  (),  ⢮  ॢ -
  䠩 ⥬. ᫨ ⥬  ᡮ ᫥ ᮧ   -
 䠩,  । ᮧ ᮮ⢥饩 ⮬   䠩  窨
室    ⠫,    㤥    稪 痢 ⠭
祭,        䠩  ⥬.    
஡   , ᫨   㭪樨 unlink 뫠 㤠 
⠫  ஢ન 㤠  ⠫  ᮤঠ   痢  
⤥묨 䠩.

    ᫨  ଠ  ७ (ਬ, ᫨ 祭  ⨯ 䠩 
।),  -  訡.   ந,  ᫨  -
 ᬮ஢ 䠩 ⥬,  ଠ஢ ࠢ쭮.
  頥   ⥬ ᪮ , ,   , ᮤঠ
,   ⢨⥫쭮 뢠,   ᮤঠ .
    ᫨      ⠫,  ᠬ   ᢮-
,  䠩  ⥬   ᮣᮢ, ᪮   
 ⠫   ஬ 祭 .    ந-
, ᫨  , ᮧ  䠩  뢠        
室    ⠫,  ᯥ  ᪮஢    䠩 - ᡮ.
   , ᫨ , 㤠  䠩  ⠫, -
 ᢮訩   ,   ᯥ  ⪮४஢  ⠫
-  ᡮ.   権  ।,  
 १ ࠡ  饬 浪.
    ᫨ ᫮ ᢮   ᢮ ᮢ, ᠭ  㯥-
,  ᮢ   ⢮  ᪥, 䠩 ⥬ ⠪   -
  ᮣᮢ.  ⮣ ଠ  㯥࡫ ᥣ  ᮮ-
⢮ ଠ樨  ⥪饬 ﭨ 䠩 ⥬.


        5.19 

    ⮩  蠥 ࢠ    ,  饭  ᬮ७
ᮡ⥩ 䠩 ⥬.   짮⥫  ६ ⠡-
栬,  ਭ騬  :  ⠡楩  짮⥫᪨ ਯ஢ 䠩,
⥬ ⠡楩 䠩  ⠡楩 ஢.    ᬮ७  -
  믮 ⥬ 㭪権,  ⭮襭  䠩 ⥬, 
⢨   ⨬  㭪ﬨ.  ᫥    ࠪ
᢮⢠  䠩  ⥬,  騥 ⥬ UNIX ন 䠩
⥬ ࠧ ⨯. , ᠭ 堭 믮    fsck,
஫饩 楫⭮  ᮣᮢ   䠩 ⥬.


        5.20 

   1. ᬮਬ ணࠬ, ਢ  㭪 5.35.  祭 -
      頥   read    ⮬ ᮤন   ? -

                                    131

      ,  ந室    ६ 믮  맮 read.
   2.  ୥  ணࠬ  㭪 5.35  ।,  
      lseek(fd,9000L,0);  ⮨  ।  饭  㭪樨 read. 
           ⮬ ந室   ?
   3.    䠩  ࠡ  ०    ᥩ  
        䠩,  ⮬   ,     -
          ᬥ饭, 㪠뢠饣 ⥪騩   䠩.
       ࠧ,     䠩  ࠡ  ० -
        ᥩ   䠩   ,   
        .  ந, ᫨  ஥ 䠩   ०
        ,  뢠  ⠭  砫 䠩 ?
   4. ⥪ ⠭ ணࠬ -뢮 蠥 䥪⨢
      믮  짮⥫ 権 ⥭    ਧ-
      樨   ⥪  ࠭ 讣 ⢠ 㫥 -
      饭  樮 ⥬, 室 짮⥫.    ॠ-
        㭪樨 fread  fwrite ?     -
       㭪樨 fopen  fclose ?

    +------------------------------------------------------------+
    | #include <fcntl.h>                                         |
    | main()                                                     |
    | {                                                          |
    |     int fd;                                                |
    |     char buf[1024];                                        |
    |     fd = creat("junk",0666);                               |
    |     lseek(fd,2000L,2);  /*    ஬ 2000 */   |
    |     write(fd,"hello",5);                                   |
    |     close(fd);                                             |
    |                                                            |
    |     fd = open("junk",O_RDONLY);                            |
    |     read(fd,buf,1024);     /* ⠥ 㫨 */               |
    |     read(fd,buf,1024); /* 뢠 , ⫨筮  0 */|
    |     read(fd,buf,1024);                                     |
    | }                                                          |
    +------------------------------------------------------------+

             㭮 5.35. 뢠 㫥   䠩


   5.  ᫨   ⠥   䠩 ᫥⥫쭮,  
      祭 , ⠭  த,  ,  ࠭饬  
      .    ந,  ᫨ ᪮쪮 ᮢ  ६
       ᫥⥫쭮 뢠     ⮣  䠩 ?

      +---------------------------------------------------------+
      | #include <fcntl.h>                                      |
      | main()                                                  |
      | {                                                       |
      |     int fd;                                             |
      |     char buf[256];                                      |
      |                                                         |
      |     fd = open("/etc/passwd",O_RDONLY);                  |
      |     if (read(fd,buf,1024) < 0)                          |
      |         printf("⥭ 蠥 㤠筮\n");        |
      | }                                                       |
      +---------------------------------------------------------+

     㭮 5.36. ⥭ 让 樨   쪨 


                                    132

   6. ᬮਬ ணࠬ, ਢ  㭪 5.36.    ந  
      १  믮  ணࠬ ?  ⢥.  ந諮 ,
      ᫨   ᨢ buf 뫮 ⠢  ﬨ  
      㣨 ᨢ ࠧ஬ 1024   ?  ࠧ  -
      ⠭,  ⠭   ᫨誮    ?
  *7.  䠩 ⥬ BSD ࠧ蠥 ࠣ஢ ᫥  䠩-
        ᮮ⢥⢨  ᫥騬 ࠢ:
      *  ࠣ ᫥  ,  㯥࡫;
      *      ন  ࠭ 뤥 ᢮ ࠣ⮢, 
        ࠧ  ࠣ  砥 室 ᢮ ;
      *    ࠣ  ⮫쪮  ᫥    
        䠩;
      *  ᫨    ࠧ  ᪮쪮 ࠣ⮢,    
        ࠧ 䠩;
      * ⢮ ࠣ⮢     ॢ 稭, 䨪-
           䠩 ⥬;
      *  砥  ࠣ    ६  믮  ⥬  㭪樨
        write.

      ࠡ⠩  ,  ᮥ騩  䠩 ࠣ . 
         ᤥ  , ⮡  ᯮ짮
      ࠣ⮢ ?  २⢠  ⥬ 窨 ७ ।⠢
      ᯮ짮 ࠣ⮢   䠩,  ᯮ  -
       樨 ?  룮  뫮   ࠣ  ६
      믮 㭪樨 close  ⮣, ⮡     믮-
       㭪樨 write ?
  *8.  ୥   㦤, ⮬   4  饬 ᯮ
         䠩.  ⮣ ,        ࠧ
      ᪮  ,  ࠧࠡ⠩  ,   ஬ ⮪ 
      䠩 ९뢠   , ᫨ 頥 㤠.  ࠢ
       ⮤  ⮤, ।  襭 ।饩 ஡.
  *9.  ᨨ V ⥬ 㭪 fcntl ᯮ  ॠ樨 堭
      墠  䠩       ᫥騩 ଠ: fcntl(fd,cmd,arg);
       fd - ਯ 䠩, cmd - ⨯ 饩  樨,      arg
      㪠뢠  ࠧ ࠬ, ⠪  ⨯ ஢ ( 
      ⥭)  ᬥ饭   (. ਫ).  騬  
      ⭮
      *  ஢ઠ   ஢, ਭ 㣨 ᠬ,  -
         ⮬ ࠢ  砥 㦥  ⠪  -
        ,
      * ⠭ ஢  ਮ⠭  ᯥ譮 襭,
      * ⠭ ஢   ⮬ ࠢ  砥 -
        㤠.
        ⮬᪨  ᭨  ஢, ⠭ ᮬ, 
      ⨨ 䠩.  ࠡ ⬠, ॠ饣 墠 䠩  
      .  ᫨ ஢  易⥫묨, 㣨 ᠬ ᫥-
          䠩.   ᫥ ᤥ   -
       ⥭   ?
 *10. ᫨  ਮ⠭ ᢮ ࠡ     䠩 -
      ஢,  ᭮  ஢:  A  -
      ஢ 䠩 "one"   ஢ 䠩 "two",   B
        ஢ 䠩 "two"   ஢ 䠩 "one".
        ३  ﭨ,  ஬    ᬮ  த-
       ᢮ ࠡ.   襭 ।饩 ஡ ⠪
      ࠧ,  ⮡   㦨 樨  ஢ 
      뢠 믮 ⥬ 㭪権.     㦥-
        ஢  ?
  11.  ⢮ ᯥ樠쭮 ⥬ 㭪樨 墠 䠩 짮-
      ⥫  室 ਡ  㣠 ࠫ쭮  -

                                    133

      ᮢ  ॠ樨 堭 墠 ⥬ 맮  ⥬  㭪権,
      믮  ⢨.   ⥬ 㭪権, ᠭ-
         ⮩ ,   ᯮ짮 ?  ᭮ -
        ᯮ짮  ⮤ ?
  12.   (. [Ritchie 81]),  墠  䠩  筮  
      ⮣, ⮡ । ⠭, 뢠 ⠪ ணࠬ, 
      ।,   ᮧ  䠩  ।஢  ९-
       ࢮ砫 䠩  砭 ࠡ. ᭨,    
      ,  ப.
  13. ᬮਬ   ᯮᮡ ஢ 䠩, ।騩 ࠧ-
      ⥫ ᫥⢨ ४஢. ।,      ᮤ-
        ⠭ ࠢ 㯠,  ⮫쪮  
       ⥪騩  뢠 䠩    ᪮쪨 ᠬ -
      뢠 䠩  ⥭.  ॠ ⮣ ᯮᮡ.

      +----------------------------------------------------------+
      | main(argc,argv)                                          |
      |       int argc;                                          |
      |       char *argv[];                                      |
      | {                                                        |
      |       if (argc != 2)                                     |
      |       {                                                  |
      |             printf(":    ⠫\n");  |
      |             exit();                                      |
      |       }                                                  |
      |                                                          |
      |       /* ࠢ 㯠  ⠫: , ⥭  -  |
      |           ࠧ襭   */                  |
      |       /* ⮫쪮 㯥௮짮⥫   ᫥-   |
      |          饥 */                                          |
      |       if (mknod(argv[1],040777,0) == -1)                 |
      |             printf("mknod 訫 㤠筮\n");      |
      | }                                                        |
      +----------------------------------------------------------+

         㭮 5.37. ⠫, ᮧ ண  襭


 *14.  ᬮਬ ணࠬ (㭮 5.37),  ᮧ ⠫  -
       ଠ⮬ ( ⠫       "."    "..").
      ஡,  室  ⮬ ⠫, 믮 ᪮쪮 , -
        ls -l, ls -ld,  cd.  ந  ⮬ ?
  15.  ணࠬ,  뢮  䠩,    㪠
       ⢥ ࠬ஢, ଠ  , ⨯ 䠩, ࠢ -
      㯠  ६ 㯠. ᫨ 䠩 (ࠬ)  ⠫, ண-
      ࠬ     ⠫  뢮 㪠 -
         䠩  ⠫.
  16. ।,   짮⥫  ࠧ襭  ⥭  ⠫,
         ࠧ襭  ᯮ.  ந, ᫨ ⠫ ᯮ-
        ⢥ ࠬ  ls,   樥 "-i"  ?  
      㤥,  ᫨  㪠    "-l" ? ᭨ ᢮ ⢥. ⢥ 
      , 㫨஢  ,   ࠧ襭  ᯮ-
      ,   ࠧ襭  ⥭  ⠫.
  17. ࠢ ࠢ 㯠,        믮
      ᫥ ⢨,  ப:
      *  ᮧ  䠩 ॡ ࠧ襭    ⠫.
      *   "ᮧ" 饣 䠩 ॡ ࠧ襭   
        䠩.
      *  㤠 裡 䠩  ⠫ ॡ ࠧ襭   

                                    134

         ⠫,    䠩.
 *18.  ணࠬ,  頥  ⠫, 稭  ⥪饣.
         ࠢ 横  娨 ⠫ ?
  19. 믮 ணࠬ, ਢ  㭪 5.38,  ᭨,  
      ⮬ ந室  . (: 믮  pwd,  ணࠬ
      ).
  20.   ணࠬ,   ୥ ⠫ 㪠 -
      ,  ᫥ ॢ ⠫, 㯭  ⮩ ணࠬ.
  21. 祬    ⬥ ।騩 맮 㭪樨 chroot ? -
        ॠ  ⠪ ࠧ, ⮡    -
        ⥪饥  祭    ।饥.   ⮩ 
      २⢠  㤮⢠ ?
  22. ᬮਬ ⮩ ਬ  (㭮 5.19),   -
         ப "hello"  ⥬ 뢠

      +----------------------------------------------------------+
      | main(argc,argv)                                          |
      |    int argc;                                             |
      |    char *argv[];                                         |
      | {                                                        |
      |    if (argc != 2)                                        |
      |    {                                                     |
      |        printf("㦥 1 㬥 -  ⠫\n");      |
      |        exit();                                           |
      |    }                                                     |
      |                                                          |
      |    if (chdir(argv[1]) == -1)                             |
      |        printf("%s 䠩   ⠫\n",argv[1]);|
      | }                                                        |
      +----------------------------------------------------------+

      㭮 5.38. ਬ ணࠬ  ᯮ짮 㭪樨 chdir


      .  ந諮 , ᫨  ᨢ         
      ࠧ  1024   6 ( ꥬ 뢠    -
       ⠢ ࠢ 6) ?  ந, ᫨ 冷 맮  㭪権
      read  write  ணࠬ ,  㭪樨 ⠬ ?
  23.   ந  믮 ணࠬ, 饩 ᯮ짮
        (㭮 5.19), ᫨  㭪  mknod  㦨,
          ⠪  㦥  ?    ॠ
      ஬ ?  ந諮 , ᫨      ࠧ㬥    ⥪
      ணࠬ    뢠饣   뢠饣 ᮢ 
       ᮡ १  ⠫ ⠭ ᪮쪮 뢠  
      뢠  ᮢ  ?    ⮬ 砥 ࠭஢  
       뢠饣    뢠騬 ᮬ ?
  24. 뢠    ⥭,  ਮ⠭ 
       ,      ஥   .  祬  ?
             ᯥ譮 ன 㭪 open, த ࠡ 
      ⮣ ,   㤥 ।ਭ ⪠ ⥭    -
      ,  ਮ⠭  믮 㭪樨 read ?
  25.      ॠ  믮 ⥬ 㭪樨 dup2 (
      ᨨ 7), 뢠 ᫥騬 ࠧ:         dup2(oldfd,newfd);
       oldfd -  䠩  ਯ,    㡫  ਯ஬
      newfd ?  ந諮 , ᫨  ਯ newfd 㦥 ਭ -
      ⮬ 䠩?
 *26.    ᫥⢨   襭    ᠬ -
      ६ ᬮ஢     䠩 ⥬      窠
      ஢ ?

                                    135
  27.  ।,      ᢮ ⥪騩 ⠫  ⠫
      "/mnt/a/b/c", ᫥ 祣 㣮    ⠫  "/mnt"  
      䠩  ⥬.    㭪 mount ᯥ譮 ?  ந-
      , ᫨   믮  pwd ?    㭪-
      樨 mount ᯥ譮 , ᫨ 祭 稪 뫮  
      ⠫ "/mnt" ॢ蠥 1. ப  .
  28.  ᯮ ⬠ 祭 窨 ஢    ".."
          ᪠ 䠩  ஢ 믮  ᫮, -
        窮 ஢:   㦥  ᮢ-
        ஬ ୥ ,   ࠡ稩      ୥
      䠩  ⥬       ᪠ - "..". 祬
      室 ஢ 믮   ᫮ ? ,  -
      ન   ᫮ 筮  ⮣, ⮡  ࠧ  -
         ஢.
  29.  ᫨  짮⥫  䠩 ⥬ ⮫쪮  ⥭, 
      ⠭ ᮮ⢥騩 䫠  㯥࡫.     -
      ९⢮  믮  権      㭪 write, creat,
      link, unlink, chown  chmod ?  த ଠ 뢠  䠩-
       ⥬  ᫥ 㭪樨 ?
 *30. ।,    ⠥ ஢ 䠩 ⥬,
        ६  㣮  ⠥ ᮧ  䠩 ⥬  -
        䠩.  쪮    㭪権 umount  creat 믮 ᯥ譮.
      ஡ ᬮ  ७.
 *31.  㭪 umount ஢ ⢨  䠩 ⥬  ⨢
      䠩,    ஡, 易  ⥬,  ୥ 
      䠩 ⥬, 砥  믮 㭪樨 mount    
      ⬠  iget,    稪 뫮  ⥫ 祭. 
      㭪 umount ᬮ 㡥  ⢨ ⨢ 䠩    -
       । ୥ 䠩 ⥬ ? ᬮ  :
      *  㭪  umount ᢮ ୥    iput ।
        ஢મ ⨢ ᮢ. ( 㭪樨    -
        , ᫨  㦥 ⨢ 䠩 ?)
      * 㭪 umount ஢ ⢨ ⨢ 䠩  ⮣,  -
         ୥ ,  ࠧ  ୥    ⠢
        ⨢. (᪮쪮 ⨢   ୥  ?)
  32.     ,   믮  ls -ld ⢮
      痢  ⠫   ࠢ 1. 祬 ?
  33.  ࠡ⠥  mkdir (ᮧ  ⠫) ?  (騩  -
      :      襭 믮    
      䠩 "."  ".." ?)
 *34. ⨥ "ᨬ᪨ 裡"  ⭮襭   㪠 
       㭪樨 link 痢  䠩, ਭ騬   ࠧ
      䠩 ⥬.  䠩 ᨬ᪮ 裡 樨஢ 㪠⥫
        ⨯;  ᮤন 䠩    ᪠ ⮣ 䠩, 
        易.  ॠ ᨬ᪨ 痢.
 *35.  ந, ᫨  맮 㭪 unlink(".");
       㤥 ⥪騩 ⠫  ? ।,   -
       ࠢ 㯥௮짮⥫.
  36. ࠡ⠩ ⥬ 㭪,  ᥪ 騩  䠩  
      ந  ࠧ஢,  㪠   ⢥ 㬥,   
      ࠡ.  ⥬ 㭪,  﫠  짮-
       㤠 ᥣ 䠩, ᯮ   ᠬ, -
         ᬥ饭,  ᦨ 䠩.  ணࠬ,   -
      뢠   㭪樨,    ⥬  㭪樮묨  -
      ﬨ.
  37.   ᫮,   稪 뫮    ॢ-
       祭 1.
  38. ࠣ ⥬ ࠪ 饭  䠩 ⥬, ⢥ 
      : ᫥  䠩 ⥬  ⨯   
      ஢,  뢠   饩 ணࠬ,   筮 饩
      樨 ஢ ?
                                    136
