home *** CD-ROM | disk | FTP | other *** search
/ For Beginners & Professional Hackers / cd.iso / docum / unix-prt.doc / chap07.prt < prev    next >
Encoding:
Text File  |  1991-11-05  |  197.6 KB  |  3,279 lines

  1.  
  2.  
  3.     âïÇéÇ 7
  4.  
  5.     EôÅÉÇéïàìêà ÅÉÄûàææÄîF
  6.  
  7.  
  8.  
  9.  
  10.     é  »αÑñδñπΘÑ⌐ ú½áóÑ íδ½ αáßß¼«ΓαÑ¡ ¬«¡ΓѬßΓ »α«µÑßßá ¿ «»¿ßá¡δ á½ú«α¿Γ¼δ
  11. ñ½∩ αáí«Γδ ß ¡¿¼; ó ñá¡¡«⌐ ú½áóÑ αÑτ∞ »«⌐ñÑΓ «í ¿ß»«½∞º«óá¡¿¿  ¿  αÑ὿ºáµ¿¿
  12. ß¿ßΓѼ¡δσ  Σπ¡¬µ¿⌐,  π»αáó½∩εΘ¿σ ¬«¡ΓѬßΓ«¼ »α«µÑßßá. æ¿ßΓѼ¡á∩ Σπ¡¬µ¿∩ fork
  13. ß«ºñáÑΓ ¡«óδ⌐ »α«µÑßß, Σπ¡¬µ¿∩ exit ºáóÑαΦáÑΓ óδ»«½¡Ñ¡¿Ñ  »α«µÑßßá,  á  wait
  14. ñáÑΓ  ó«º¼«ª¡«ßΓ∞ α«ñ¿Γѽ∞߬«¼π »α«µÑßßπ ß¿¡σα«¡¿º¿α«óáΓ∞ ßó«Ñ »α«ñ«½ªÑ¡¿Ñ ß
  15. ºáóÑαΦÑ¡¿Ñ¼ »«α«ªñÑ¡¡«ú« »α«µÑßßá. Äí áß¿¡σα«¡¡δσ ß«íδΓ¿∩σ »α«µÑßßδ ¿¡Σ«α¼¿-
  16. απεΓß∩ »α¿ »«¼«Θ¿ ß¿ú¡á½«ó. Å«ß¬«½∞¬π ∩ñα« ß¿¡σα«¡¿º¿απÑΓ óδ»«½¡Ñ¡¿Ñ Σπ¡¬µ¿⌐
  17. exit ¿ wait »α¿ »«¼«Θ¿ ß¿ú¡á½«ó, «»¿ßá¡¿Ñ ¼Ñσá¡¿º¼á ß¿ú¡á½«ó »αÑñóáα∩ÑΓ  ß«-
  18. í«⌐  αáßß¼«ΓαÑ¡¿Ñ  Σπ¡¬µ¿⌐ exit ¿ wait. æ¿ßΓѼ¡á∩ Σπ¡¬µ¿∩ exec ñáÑΓ »α«µÑßßπ
  19. 󫺼«ª¡«ßΓ∞ ºá»π߬áΓ∞ "¡«óπε" »α«úαá¼¼π, ¡á¬½áñδóá∩ ÑÑ áñαÑß¡«Ñ »α«ßΓαá¡ßΓó«
  20. ¡á ¿ß»«½¡∩Ѽδ⌐ «íαẠΣá⌐½á. æ¿ßΓѼ¡á∩ Σπ¡¬µ¿∩ brk »«ºó«½∩ÑΓ ñ¿¡á¼¿τÑ߬¿  óδ-
  21. ñѽ∩Γ∞ ñ«»«½¡¿Γѽ∞¡πε »á¼∩Γ∞; ΓѼ¿ ªÑ ßá¼δ¼¿ ßαÑñßΓóἿ ∩ñα« ñ¿¡á¼¿τÑ߬¿ ¡á-
  22. αáΘ¿óáÑΓ  ßΓѬ  ºáñáτ¿, óδñѽ∩∩ ó ß½πτáÑ ¡Ñ«íσ«ñ¿¼«ßΓ¿ ñ«»«½¡¿Γѽ∞¡«Ñ »α«ßΓ-
  23. αá¡ßΓó«. é ºá¬½ετ¿Γѽ∞¡«⌐ τáßΓ¿ ú½áóδ ñáÑΓß∩ ¬αáΓ¬«Ñ «»¿ßá¡¿Ñ «ß¡«ó¡δσ úαπ»»
  24. «»Ñαᵿ⌐ ¬«¼á¡ñ¡«ú« »α«µÑßß«αá shell ¿ ¡áτá½∞¡«ú« »α«µÑßßá init.
  25.     ìá É¿ßπ¡¬Ñ 7.1 »«¬áºá¡á óºá¿¼«ßó∩º∞ ¼Ñªñπ ß¿ßΓѼ¡δ¼¿ Σπ¡¬µ¿∩¼¿, αáßß¼áΓ-
  26. α¿óáÑ¼δ¼¿ ó ñá¡¡«⌐ ú½áóÑ, ß «ñ¡«⌐ ßΓ«α«¡δ, ¿ á½ú«α¿Γ¼á¼¿, «»¿ßá¡¡δ¼¿ ó  »αÑ-
  27. ñδñπΘÑ⌐ ú½áóÑ, ß ñαπú«⌐. Å«τΓ¿ ó« óßÑσ Σπ¡¬µ¿∩σ ¿ß»«½∞ºπεΓß∩ á½ú«α¿Γ¼δ sleep
  28. ¿ wakeup, «ΓßπΓßΓóπεΘ¿Ñ ¡á α¿ßπ¡¬Ñ. öπ¡¬µ¿∩ exec, ¬α«¼Ñ Γ«ú«, óºá¿¼«ñÑ⌐ßΓóπ-
  29. ÑΓ ß á½ú«α¿Γ¼á¼¿ αáí«Γδ ß Σá⌐½«ó«⌐ ß¿ßΓѼ«⌐, αÑτ∞ « ¬«Γ«αδσ Φ½á ó ú½áóáσ 4 ¿
  30. 5.
  31.  
  32. ┌─────────────────────────────┬─────────────────────┬────────────┐
  33. │ æ¿ßΓѼ¡δÑ Σπ¡¬µ¿¿, ¿¼ÑεΘ¿Ñ  │ æ¿ßΓѼ¡δÑ Σπ¡¬µ¿¿,  │  öπ¡¬µ¿¿   │
  34. │ εΘ¿Ñ ñѽ« ß π»αáó½Ñ¡¿Ñ¼ »á- │ ßó∩ºá¡¡δÑ ß ß¿¡σα«- │ ß¼ÑΦá¡¡«ú« │
  35. │            ¼∩Γ∞ε            │      ¡¿ºáµ¿Ñ⌐       │    Γ¿»á    │
  36. ├───────┬───────┬───────┬─────┴──┬────┬──────┬────┬─┴─────┬──────┤
  37. │ fork  │ exec  │  brk  │  exit  │wait│signal│kill│setrgrp│setuid│
  38. ├───────┼───────┼───────┼────────┼────┴──────┴────┴───────┴──────┤
  39. │dupreg │detach-│growreg│ detach-│                               │
  40. │attach-│  reg  │       │  reg   │                               │
  41. │ reg   │alloc- │       │        │                               │
  42. │       │  reg  │       │        │                               │
  43. │       │attach-│       │        │                               │
  44. │       │  reg  │       │        │                               │
  45. │       │growreg│       │        │                               │
  46. │       │loadreg│       │        │                               │
  47. │       │mapreg │       │        │                               │
  48. └───────┴───────┴───────┴────────┴───────────────────────────────┘
  49.  
  50.     É¿ßπ¡«¬ 7.1.  æ¿ßΓѼ¡δÑ  Σπ¡¬µ¿¿  π»αáó½Ñ¡¿∩  »α«µÑßß«¼  ¿ ¿σ
  51.                   ßó∩º∞ ß ñαπú¿¼¿ á½ú«α¿Γ¼á¼¿
  52.  
  53.  
  54.  
  55.     E7.1 æÄçäÇìêà ÅÉÄûàææÇF
  56.  
  57.     àñ¿¡ßΓóÑ¡¡δ¼  ß»«ß«í«¼ ß«ºñá¡¿∩ »«½∞º«óáΓѽѼ ¡«ó«ú« »α«µÑßßá ó «»Ñαᵿ-
  58. «¡¡«⌐ ß¿ßΓѼѠUNIX ∩ó½∩ÑΓß∩ óδ»«½¡Ñ¡¿Ñ ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿ fork. Åα«µÑßß,  óδ-
  59. ºδóáεΘ¿⌐  Σπ¡¬µ¿ε  fork,  ¡áºδóáÑΓß∩  α«ñ¿Γѽ∞߬¿¼ (»α«µÑßß-α«ñ¿Γѽ∞), ó¡«ó∞
  60. ß«ºñáóáѼδ⌐ »α«µÑßß ¡áºδóáÑΓß∩ »«α«ªñÑ¡¡δ¼ (»α«µÑßß-»«Γ«¼«¬). æ¿¡Γá¬ß¿ß  óδ-
  61. º«óá Σπ¡¬µ¿¿ fork:
  62.  
  63.                                     179
  64.  
  65.     pid = fork();
  66. é  αѺπ½∞ΓáΓÑ  óδ»«½¡Ñ¡¿∩  Σπ¡¬µ¿¿  fork »«½∞º«óáΓѽ∞߬¿⌐ ¬«¡ΓѬßΓ ¿ Γ«ú«, ¿
  67. ñαπú«ú« »α«µÑßß«ó ß«ó»áñáÑΓ ó« óßѼ, ¬α«¼Ñ ó«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩ »ÑαѼѡ¡«⌐
  68. pid. ä½∩ α«ñ¿Γѽ∞߬«ú« »α«µÑßßá ó pid ó«ºóαáΘáÑΓß∩ ¿ñÑ¡Γ¿Σ¿¬áΓ«α »«α«ªñÑ¡¡«-
  69. ú« »α«µÑßßá, ñ½∩ »«α«ªñÑ¡¡«ú« - pid ¿¼ÑÑΓ ¡π½Ñó«Ñ º¡áτÑ¡¿Ñ. ìπ½Ñó«⌐ »α«µÑßß,
  70. 󫺡¿¬áεΘ¿⌐ ó¡πΓα¿ ∩ñαá »α¿ ºáúαπº¬Ñ ß¿ßΓѼδ, ∩ó½∩ÑΓß∩ Ññ¿¡ßΓóÑ¡¡δ¼  »α«µÑß-
  71. ß«¼, ¡Ñ ß«ºñáóáÑ¼δ¼ ß »«¼«Θ∞ε Σπ¡¬µ¿¿ fork.
  72.     é  σ«ñÑ  óδ»«½¡Ñ¡¿∩ Σπ¡¬µ¿¿ ∩ñα« »α«¿ºó«ñ¿Γ ß½ÑñπεΘπε »«ß½Ññ«óáΓѽ∞¡«ßΓ∞
  73. ñÑ⌐ßΓó¿⌐:
  74.  1. ÄΓó«ñ¿Γ ¼ÑßΓ« ó Γáí½¿µÑ »α«µÑß߫󠻫ñ ¡«óδ⌐ »α«µÑßß.
  75.  2. Åα¿ßóá¿óáÑΓ »«α«ªñáѼ«¼π »α«µÑßßπ π¡¿¬á½∞¡δ⌐ ¬«ñ ¿ñÑ¡Γ¿Σ¿¬áµ¿¿.
  76.  3. äѽáÑΓ ½«ú¿τÑ߬πε ¬«»¿ε ¬«¡ΓѬßΓá α«ñ¿Γѽ∞߬«ú« »α«µÑßßá.  Å«ß¬«½∞¬π  ΓÑ
  77.     ¿½¿  ¿¡δÑ  ß«ßΓáó½∩εΘ¿Ñ »α«µÑßßá, ΓᬿѠ¬á¬ «í½áßΓ∞ ¬«¼á¡ñ, ¼«úπΓ αáºñÑ-
  78.     ½∩Γ∞ß∩ ñαπú¿¼¿ »α«µÑßßἿ, ∩ñα« ¼«ªÑΓ ¿¡«úñá ó¼ÑßΓ« ¬«»¿α«óá¡¿∩  «í½áßΓ¿
  79.     ó  ¡«óδ⌐  Σ¿º¿τÑ߬¿⌐  πτáßΓ«¬  »á¼∩Γ¿ »α«ßΓ« πóѽ¿τ¿Γ∞ º¡áτÑ¡¿Ñ ßτÑΓτ¿¬á
  80.     ßß佫¬ ¡á «í½áßΓ∞.
  81.  4. ôóѽ¿τ¿óáÑΓ º¡áτÑ¡¿∩ ßτÑΓτ¿¬á τ¿ß½á Σá⌐½«ó, ßó∩ºá¡¡δσ ß »α«µÑßß«¼, ¬á¬ ó
  82.     Γáí½¿µÑ Σá⌐½«ó, Γᬠ¿ ó Γáí½¿µÑ ¿¡ñѬ߫ó.
  83.  5. é«ºóαáΘáÑΓ α«ñ¿Γѽ∞߬«¼π »α«µÑßß𠬫ñ ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ »«α«ªñÑ¡¡«ú« »α«µÑß-
  84.     ßá, á »«α«ªñÑ¡¡«¼π »α«µÑßßπ -  ¡π½Ñó«Ñ  º¡áτÑ¡¿Ñ.
  85.  
  86.     ÉÑ὿ºáµ¿ε  ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿ fork, »«ªá½π⌐, ¡Ñ½∞º∩ ¡áºóáΓ∞ Γα¿ó¿á½∞¡«⌐,
  87. Γᬠ¬á¬ »«α«ªñÑ¡¡δ⌐ »α«µÑßß ¡áτ¿¡áÑΓ ßó«Ñ óδ»«½¡Ñ¡¿Ñ,  ó«º¡¿¬á∩  ¬á¬  íδ  ¿º
  88. ó«ºñπσá. Ç½ú«α¿Γ¼ αÑ὿ºáµ¿¿ Σπ¡¬µ¿¿ ñ½∩ ß¿ßΓѼ ß ºá¼ÑΘÑ¡¿Ñ¼ ßΓαá¡¿µ »« ºá»-
  89. α«ßπ  ¿ ñ½∩ ß¿ßΓѼ ß »«ñ¬áτ¬«⌐ »α«µÑß߫󠿼ÑÑΓ ½¿Φ∞ ¡Ñº¡áτ¿Γѽ∞¡δÑ αẽ¿τ¿∩;
  90. óßÑ ¿º½«ªÑ¡¡«Ñ ¡¿ªÑ ó «Γ¡«ΦÑ¡¿¿ φΓ«ú« á½ú«α¿Γ¼á ¬áßáÑΓß∩  ó  »Ñαóπε  «τÑαÑñ∞
  91. Γαáñ¿µ¿«¡¡δσ  ß¿ßΓѼ ß »«ñ¬áτ¬«⌐ »α«µÑßß«ó, ¡« ß ¡Ñ»αѼѡ¡δ¼ á¬µÑ¡Γ¿α«ó᡿Ѽ
  92. 󡿼᡿∩ ¡á ΓÑσ ¼«¼Ñ¡Γáσ, ¬«Γ«αδÑ ó ß¿ßΓѼáσ ß ºá¼ÑΘÑ¡¿Ñ¼ ßΓαá¡¿µ »« ºá»α«ßπ
  93. αÑ὿ºπεΓß∩ ¿¡áτÑ. èα«¼Ñ Γ«ú«, ¬«¡Ñτ¡«, »αÑñ»«½áúáÑΓß∩, τΓ« ó ß¿ßΓѼѠ¿¼ÑÑΓ-
  94. ß∩ ßó«í«ñ¡á∩ «»ÑαáΓ¿ó¡á∩ »á¼∩Γ∞,  ñ«ßΓáΓ«τ¡á∩  ñ½∩  αẼÑΘÑ¡¿∩  »«α«ªñÑ¡¡«ú«
  95. »α«µÑßßá. é ú½áóÑ 9 íπñÑΓ «Γñѽ∞¡« αáßß¼«ΓαÑ¡ ß½πτá⌐, ¬«úñá ñ½∩ »«α«ªñÑ¡¡«ú«
  96. »α«µÑßßá ¡Ñ σóáΓáÑΓ »á¼∩Γ¿, ¿ Γá¼ ªÑ íπñπΓ ñá¡δ αáºΩ∩ߡѡ¿∩ «Γ¡«ß¿Γѽ∞¡« αÑ-
  97. ὿ºáµ¿¿ á½ú«α¿Γ¼á fork ó ß¿ßΓѼáσ ß ºá¼ÑΘÑ¡¿Ñ¼ ßΓαá¡¿µ.
  98.     ìá  É¿ßπ¡¬Ñ 7.2 »α¿óÑñÑ¡ á½ú«α¿Γ¼ ß«ºñá¡¿∩ »α«µÑßßá. æ¡áτá½á ∩ñα« ñ«½ª¡«
  99. πñ«ßΓ«óÑα¿Γ∞ß∩ ó Γ«¼, τΓ« ñ½∩ πß»ÑΦ¡«ú« óδ»«½¡Ñ¡¿∩ á½ú«α¿Γ¼á fork  ÑßΓ∞  óßÑ
  100. ¡Ñ«íσ«ñ¿¼δÑ αÑßπαßδ. é ß¿ßΓѼѠߠ»«ñ¬áτ¬«⌐ »α«µÑßß«ó ñ½∩ αẼÑΘÑ¡¿∩ »«α«ªñá-
  101. Ѽ«ú« »α«µÑßßá ΓαÑíπÑΓß∩ ¼ÑßΓ« ½¿í« ó »á¼∩Γ¿, ½¿í« ¡á ñ¿ß¬Ñ; ó ß¿ßΓѼѠߠºá-
  102. ¼ÑΘÑ¡¿Ñ¼ ßΓαá¡¿µ ß½ÑñπÑΓ óδñѽ¿Γ∞ »á¼∩Γ∞ ñ½∩ óß»«¼«úáΓѽ∞¡δσ Γáí½¿µ (ó τáßΓ-
  103. ¡«ßΓ¿,  Γáí½¿µ ßΓαá¡¿µ). àß½¿ ßó«í«ñ¡δσ αÑßπαß«ó ¡ÑΓ, á½ú«α¿Γ¼ fork ºáóÑαΦá-
  104. ÑΓß∩ ¡Ñπñáτ¡«. ƒñα« ¿ΘÑΓ ¼ÑßΓ« ó Γáí½¿µÑ »α«µÑßß«ó ñ½∩ ¬«¡ßΓαπ¿α«óá¡¿∩  ¬«¡-
  105. ΓѬßΓá  »«α«ªñáѼ«ú«  »α«µÑßßá ¿ »α«óÑα∩ÑΓ, ¡Ñ »αÑóδß¿½ ½¿ »«½∞º«óáΓѽ∞, óδ-
  106. »«½¡∩εΘ¿⌐ fork, «úαá¡¿τÑ¡¿Ñ ¡á ¼á¬ß¿¼á½∞¡«-ñ«»πßΓ¿¼«Ñ ¬«½¿τÑßΓó« »áαώѽ∞¡«
  107. ºá»πΘÑ¡¡δσ »α«µÑßß«ó. ƒñα« ΓᬪѠ»«ñí¿αáÑΓ ñ½∩  ¡«ó«ú«  »α«µÑßßá  π¡¿¬á½∞¡δ⌐
  108. ¿ñÑ¡Γ¿Σ¿¬áΓ«α, º¡áτÑ¡¿Ñ ¬«Γ«α«ú« »αÑóδΦáÑΓ ¡á Ññ¿¡¿µπ ¼á¬ß¿¼á½∞¡δ⌐ ¿º ßπΘÑß-
  109. ΓóπεΘ¿σ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó. àß½¿ »αÑñ½áúáѼδ⌐ ¿ñÑ¡Γ¿Σ¿¬áΓ«α πªÑ »α¿ßó«Ñ¡ ñαπú«-
  110. ¼π  »α«µÑßßπ, ∩ñα« íÑαÑΓ ¿ñÑ¡Γ¿Σ¿¬áΓ«α, ß½ÑñπεΘ¿⌐ »« »«α∩ñ¬π. èá¬ Γ«½∞¬« íπ-
  111. ñÑΓ ñ«ßΓ¿ú¡πΓ« ¼á¬ß¿¼á½∞¡«-ñ«»πßΓ¿¼«Ñ º¡áτÑ¡¿Ñ, «ΓßτÑΓ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó «»∩Γ∞
  112. ¡áτ¡ÑΓß∩ ß 0. Å«ß¬«½∞¬π í«½∞Φ¿¡ßΓó« »α«µÑß߫󠿼ÑÑΓ  ¬«α«Γ¬«Ñ  óαѼ∩  ª¿º¡¿,
  113. »α¿ »ÑαÑσ«ñÑ ¬ ¡áτá½π «ΓßτÑΓá º¡áτ¿Γѽ∞¡á∩ τáßΓ∞ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó «¬áºδóáÑΓß∩
  114. ßó«í«ñ¡«⌐.
  115.     ìá ¬«½¿τÑßΓó« «ñ¡«óαѼѡ¡« óδ»«½¡∩εΘ¿σß∩ »α«µÑßß«ó ¡á¬½áñδóáÑΓß∩ «úαá¡¿-
  116. τÑ¡¿Ñ (¬«¡Σ¿úπα¿απѼ«Ñ), «Γßεñá ¡¿ «ñ¿¡ ¿º »«½∞º«óáΓѽÑ⌐ ¡Ñ ¼«ªÑΓ ºá¡¿¼áΓ∞ ó
  117. Γáí½¿µÑ  »α«µÑßß«ó ß½¿Φ¬«¼ ¼¡«ú« ¼ÑßΓá, ¼ÑΦá∩ ΓѼ ßá¼δ¼ ñαπú¿¼ »«½∞º«óáΓѽ∩¼
  118. ß«ºñáóáΓ∞ ¡«óδÑ »α«µÑßßδ. èα«¼Ñ Γ«ú«, »α«ßΓδ¼ »«½∞º«óáΓѽ∩¼  ¡Ñ  αáºαÑΦáÑΓß∩
  119. ß«ºñáóáΓ∞ »α«µÑßß, ºá¡¿¼áεΘ¿⌐ »«ß½Ññ¡ÑÑ ßó«í«ñ¡«Ñ ¼ÑßΓ« ó Γáí½¿µÑ »α«µÑßß«ó,
  120. ó  »α«Γ¿ó¡«¼  ß½πτáÑ  ß¿ßΓѼᠺáΦ½á íδ ó Γπ»¿¬. äαπú¿¼¿ ß½«óἿ, »«ß¬«½∞¬π ó
  121. Γáí½¿µÑ »α«µÑßß«ó ¡ÑΓ ßó«í«ñ¡«ú« ¼ÑßΓá, Γ« ∩ñα« ¡Ñ ¼«ªÑΓ úáαá¡Γ¿α«óáΓ∞,  τΓ«
  122. óßÑ  ßπΘÑßΓóπεΘ¿Ñ  »α«µÑßßδ  ºáóÑαΦáΓß∩  ÑßΓÑßΓóÑ¡¡δ¼ «íαẫ¼, »«φΓ«¼π ¡«óδÑ
  123.  
  124.  
  125.                                     180
  126.  
  127.     ┌────────────────────────────────────────────────────────────┐
  128.     │ á½ú«α¿Γ¼ fork                                              │
  129.     │ óσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩:  «ΓßπΓßΓóπÑΓ                           │
  130.     │ óδσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩: ñ½∩ α«ñ¿Γѽ∞߬«ú« »α«µÑßßá - ¿ñÑ¡Γ¿Σ¿-│
  131.     │                       ¬áΓ«α (PID) »«α«ªñÑ¡¡«ú« »α«µÑßßá    │
  132.     │                      ñ½∩ »«α«ªñÑ¡¡«ú« »α«µÑßßá - 0         │
  133.     │ {                                                          │
  134.     │    »α«óÑα¿Γ∞ ñ«ßΓπ»¡«ßΓ∞ αÑßπαß«ó ∩ñαá;                    │
  135.     │    »«½πτ¿Γ∞ ßó«í«ñ¡«Ñ ¼ÑßΓ« ó Γáí½¿µÑ »α«µÑßß«ó ¿ π¡¿¬á½∞- │
  136.     │     ¡δ⌐ ¬«ñ ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ (PID);                           │
  137.     │    »α«óÑα¿Γ∞, ¡Ñ ºá»πßΓ¿½ ½¿ »«½∞º«óáΓѽ∞ ß½¿Φ¬«¼ ¼¡«ú«    │
  138.     │     »α«µÑßß«ó;                                             │
  139.     │    ßñѽáΓ∞ »«¼ÑΓ¬π « Γ«¼, τΓ« »«α«ªñáѼδ⌐ »α«µÑßß ¡áσ«ñ¿Γß∩│
  140.     │     ó ß«ßΓ«∩¡¿¿ "ß«ºñá¡¿∩";                                │
  141.     │    ß¬«»¿α«óáΓ∞ ¿¡Σ«α¼áµ¿ε ó Γáí½¿µÑ »α«µÑß߫󠿺 ºá»¿ß¿,   │
  142.     │     ß««ΓóÑΓßΓóπεΘÑ⌐ α«ñ¿Γѽ∞߬«¼π »α«µÑßßπ, ó ºá»¿ß∞, ß««Γ-│
  143.     │     óÑΓßΓóπεΘπε »«α«ªñÑ¡¡«¼π »α«µÑßßπ;                     │
  144.     │    πóѽ¿τ¿Γ∞ º¡áτÑ¡¿∩ ßτÑΓτ¿¬«ó ßß佫¬ ¡á ΓѬπΘ¿⌐ ¬áΓὫú ¿│
  145.     │     ¡á ¬«α¡Ñó«⌐ ¬áΓὫú (Ñß½¿ «¡ íδ½ ¿º¼Ñ¡Ñ¡);             │
  146.     │    πóѽ¿τ¿Γ∞ º¡áτÑ¡¿Ñ ßτÑΓτ¿¬á «Γ¬αδΓ¿⌐ Σá⌐½á ó Γáí½¿µÑ    │
  147.     │     Σá⌐½«ó;                                                │
  148.     │    ßñѽáΓ∞ ¬«»¿ε ¬«¡ΓѬßΓá α«ñ¿Γѽ∞߬«ú« »α«µÑßßá (áñαÑß¡«Ñ│
  149.     │     »α«ßΓαá¡ßΓó«, ¬«¼á¡ñδ, ñá¡¡δÑ, ßΓѬ) ó »á¼∩Γ¿;         │
  150.     │    »«¼ÑßΓ¿Γ∞ ó ßΓѬ Σ¿¬Γ¿ó¡δ⌐ πα«óÑ¡∞ ß¿ßΓѼ¡«ú« ¬«¡ΓѬßΓá │
  151.     │     ¡áñ πα«ó¡Ñ¼ ß¿ßΓѼ¡«ú« ¬«¡ΓѬßΓá, ß««ΓóÑΓßΓóπεΘ¿¼ »«-  │
  152.     │     α«ªñÑ¡¡«¼π »α«µÑßßπ;                                   │
  153.     │         Σ¿¬Γ¿ó¡δ⌐ ¬«¡ΓѬßΓ¡δ⌐ πα«óÑ¡∞ ß«ñÑαª¿Γ ¿¡Σ«α¼áµ¿ε, │
  154.     │         ¡Ñ«íσ«ñ¿¼πε »«α«ªñÑ¡¡«¼π »α«µÑßßπ ñ½∩ Γ«ú«, τΓ«íδ  │
  155.     │         º¡áΓ∞ óßÑ « ßÑíÑ ¿ íπñπτ¿ óδíαá¡¡δ¼ ñ½∩ ¿ß»«½¡Ñ¡¿∩ │
  156.     │         ºá»π߬áΓ∞ß∩ ß φΓ«ú« ¼ÑßΓá;                         │
  157.     │    Ñß½¿ (ó ñá¡¡δ⌐ ¼«¼Ñ¡Γ óδ»«½¡∩ÑΓß∩ α«ñ¿Γѽ∞߬¿⌐ »α«µÑßß) │
  158.     │    {                                                       │
  159.     │       »ÑαÑóÑßΓ¿ »«α«ªñÑ¡¡δ⌐ »α«µÑßß ó ß«ßΓ«∩¡¿Ñ "ú«Γ«ó¡«ßΓ¿│
  160.     │        ¬ óδ»«½¡Ñ¡¿ε";                                      │
  161.     │       ó«ºóαáΓ¿Γ∞ (¿ñÑ¡Γ¿Σ¿¬áΓ«α »«α«ªñÑ¡¡«ú« »α«µÑßßá);    │
  162.     │                  /* ¿º ß¿ßΓÑ¼δ »«½∞º«óáΓѽε */             │
  163.     │    }                                                       │
  164.     │    ó »α«Γ¿ó¡«¼ ß½πτáÑ   /* óδ»«½¡∩ÑΓß∩ »«α«ªñÑ¡¡δ⌐         │
  165.     │                                        »α«µÑßß */          │
  166.     │    {                                                       │
  167.     │       ºá»¿ßáΓ∞ ¡áτá½∞¡δÑ º¡áτÑ¡¿∩ ó »«½∩ ß¿¡σα«¡¿ºáµ¿¿ áñ- │
  168.     │        αÑß¡«ú« »α«ßΓαá¡ßΓóá »α«µÑßßá;                      │
  169.     │       ó«ºóαáΓ¿Γ∞ (0);   /* »«½∞º«óáΓѽε */                 │
  170.     │    }                                                       │
  171.     │ }                                                          │
  172.     └────────────────────────────────────────────────────────────┘
  173.  
  174.                     É¿ßπ¡«¬ 7.2. Ç½ú«α¿Γ¼ fork
  175.  
  176.  
  177. »α«µÑßßδ ß«ºñáóáΓ∞ß∩ ¡Ñ íπñπΓ. æ  ñαπú«⌐  ßΓ«α«¡δ,  ßπ»Ñα»«½∞º«óáΓÑ½ε  ¡πª¡«
  178. ñáΓ∞  ó«º¼«ª¡«ßΓ∞  ¿ß»«½¡∩Γ∞ ßΓ«½∞¬« »α«µÑßß«ó, ß¬«½∞¬« Ñ¼π »«ΓαÑíπÑΓß∩, ¬«-
  179. ¡Ñτ¡«, πτ¿Γδóá∩ αẼÑα Γáí½¿µδ »α«µÑßß«ó, »α¿ φΓ«¼ »α«µÑßß, ¿ß»«½¡∩Ѽδ⌐  ßπ-
  180. »Ñα»«½∞º«óáΓѽѼ,  ¼«ªÑΓ ºá¡∩Γ∞ ó Γáí½¿µÑ ¿ »«ß½Ññ¡ÑÑ ßó«í«ñ¡«Ñ ¼ÑßΓ«. ÅαÑñ-
  181. »«½áúáÑΓß∩, τΓ« ßπ»Ñα»«½∞º«óáΓѽ∞ ¼«ªÑΓ »α¿íÑúáΓ∞ ¬ αÑΦ¿Γѽ∞¡δ¼ ¼Ñαá¼ ¿  ºá-
  182. »π߬áΓ∞ »α«µÑßß, »«íπªñáεΘ¿⌐ «ßΓá½∞¡δÑ »α«µÑßßδ ¬ ºáóÑαΦÑ¡¿ε, Ñß½¿ φΓ« óδºδ-
  183. óáÑΓß∩  ¡Ñ«íσ«ñ¿¼«ßΓ∞ε  (ß¼. αáºñѽ 7.2.3, úñÑ ú«ó«α¿Γß∩ « ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿
  184. kill).
  185.     çáΓѼ ∩ñα« »α¿ßóá¿óáÑΓ ¡áτá½∞¡δÑ º¡áτÑ¡¿∩ αẽ¿τ¡δ¼ »«½∩¼ ºá»¿ß¿ Γáí½¿µδ
  186.  
  187.                                     181
  188.  
  189. »α«µÑßß«ó, ß««ΓóÑΓßΓóπεΘÑ⌐ »«α«ªñÑ¡¡«¼π »α«µÑßßπ, ¬«»¿απ∩ ó ¡¿σ º¡áτÑ¡¿∩ »«-
  190. ½Ñ⌐ ¿º ºá»¿ß¿ α«ñ¿Γѽ∞߬«ú« »α«µÑßßá. ìá»α¿¼Ñα, »«α«ªñÑ¡¡δ⌐ »α«µÑßß  "¡áß½Ñ-
  191. ñπÑΓ"  π  α«ñ¿Γѽ∞߬«ú« »α«µÑßßá ¬«ñδ ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ »«½∞º«óáΓѽ∩ (αÑá½∞¡δ⌐ ¿
  192. Γ«Γ, »«ñ ¬«Γ«αδ¼ ¿ß»«½¡∩ÑΓß∩ »α«µÑßß), úαπ»»π »α«µÑßß«ó,  π»αáó½∩Ѽπε  α«ñ¿-
  193. Γѽ∞߬¿¼ »α«µÑßß«¼, á ΓᬪѠº¡áτÑ¡¿Ñ, ºáñá¡¡«Ñ α«ñ¿Γѽ∞߬¿¼ »α«µÑßß«¼ ó Σπ¡-
  194. ¬µ¿¿ nice ¿ ¿ß»«½∞ºπѼ«Ñ »α¿ óδτ¿ß½Ñ¡¿¿ »α¿«α¿ΓÑΓá »½á¡¿α«óá¡¿∩. é ß½ÑñπεΘ¿σ
  195. αáºñѽáσ  ¼δ  »«ú«ó«α¿¼ « ¡áº¡áτÑ¡¿¿ φΓ¿σ »«½Ñ⌐. ƒñα« »ÑαÑñáÑΓ º¡áτÑ¡¿Ñ »«½∩
  196. ¿ñÑ¡Γ¿Σ¿¬áΓ«αá α«ñ¿Γѽ∞߬«ú« »α«µÑßßá ó ºá»¿ß∞ »«α«ªñÑ¡¡«ú«, ó¬½ετá∩ »«ß½Ññ-
  197. ¡¿⌐ ó ñαÑó«ó¿ñ¡πε ßΓαπ¬Γπαπ »α«µÑßß«ó, ¿ »α¿ßóá¿óáÑΓ ¡áτá½∞¡δÑ º¡áτÑ¡¿∩ αáº-
  198. ½¿τ¡δ¼ »áαá¼ÑΓαá¼ »½á¡¿α«óá¡¿∩, Γᬿ¼ ¬á¬ »α¿«α¿ΓÑΓ »½á¡¿α«óá¡¿∩,  ¿ß»«½∞º«-
  199. óá¡¿Ñ  αÑßπα߫󠠵ѡΓαá½∞¡«ú« »α«µÑßß«αá ¿ ñαπú¿Ñ º¡áτÑ¡¿∩ »«½Ñ⌐ ß¿¡σα«¡¿ºá-
  200. µ¿¿. ìáτá½∞¡δ¼ ß«ßΓ«∩¡¿Ñ¼ »α«µÑßßá ∩ó½∩ÑΓß∩ ß«ßΓ«∩¡¿Ñ "ß«ºñá¡¿∩" (ß¼.  É¿ßπ-
  201. ¡«¬ 6.1).
  202.     Å«ß½Ñ  Γ«ú« ∩ñα« πßΓá¡áó½¿óáÑΓ º¡áτÑ¡¿∩ ßτÑΓτ¿¬«ó ßß佫¬ ¡á Σá⌐½δ, ß ¬«-
  203. Γ«α묨 áóΓ«¼áΓ¿τÑ߬¿ ßó∩ºδóáÑΓß∩ »«α«ªñáѼδ⌐ »α«µÑßß. é«-»Ñαóδσ, »«α«ªñÑ¡¡δ⌐
  204. »α«µÑßß αẼÑΘáÑΓß∩ ó ΓѬπΘѼ ¬áΓὫúÑ α«ñ¿Γѽ∞߬«ú« »α«µÑßßá. ù¿ß½« »α«µÑß-
  205. ß«ó, «íαáΘáεΘ¿σß∩ ó ñá¡¡δ⌐ ¼«¼Ñ¡Γ ¬ ¬áΓὫúπ, πóѽ¿τ¿óáÑΓß∩ ¡á 1 ¿, ß««ΓóÑΓ-
  206. ßΓóÑ¡¡«, πóѽ¿τ¿óáÑΓß∩ º¡áτÑ¡¿Ñ ßτÑΓτ¿¬á ßß佫¬ ¡á  Ñú«  ¿¡ñѬß.  é«-óΓ«αδσ,
  207. Ñß½¿  α«ñ¿Γѽ∞߬¿⌐ »α«µÑßß ¿½¿ «ñ¿¡ ¿º Ñú« »αÑñ¬«ó πªÑ óδ»«½¡∩½ ß¼Ñ¡π ¬«α¡Ñ-
  208. ó«ú« ¬áΓὫúá ß »«¼«Θ∞ε Σπ¡¬µ¿¿ chroot, »«α«ªñÑ¡¡δ⌐ »α«µÑßß ¡áß½ÑñπÑΓ ¿  ¡«-
  209. óδ⌐  ¬«αÑ¡∞ ß ß««ΓóÑΓßΓóπεΘ¿¼ πóѽ¿τÑ¡¿Ñ¼ º¡áτÑ¡¿∩ ßτÑΓτ¿¬á ßß佫¬ ¡á ¿¡ñѬß
  210. ¬«α¡∩. ìᬫ¡Ñµ, ∩ñα« »α«ß¼áΓα¿óáÑΓ Γáí½¿µπ »«½∞º«óáΓѽ∞߬¿σ ñÑß¬α¿»Γ«α«ó ñ½∩
  211. α«ñ¿Γѽ∞߬«ú« »α«µÑßßá ó »«¿ß¬áσ «Γ¬αδΓδσ Σá⌐½«ó, ¿ºóÑßΓ¡δσ »α«µÑßßπ, ¿ πóÑ-
  212. ½¿τ¿óáÑΓ º¡áτÑ¡¿Ñ ßτÑΓτ¿¬á ßß佫¬, áßß«µ¿¿α«óá¡¡«ú«  ß  ¬áªñδ¼  ¿º  «Γ¬αδΓδσ
  213. Σá⌐½«ó, ó ú½«íá½∞¡«⌐ Γáí½¿µÑ Σá⌐½«ó. Å«α«ªñÑ¡¡δ⌐ »α«µÑßß ¡Ñ »α«ßΓ« ¡áß½ÑñπÑΓ
  214. »αáóá  ñ«ßΓπ»á ¬ «Γ¬αδΓδ¼ Σá⌐½á¼, ¡« ¿ αáºñѽ∩ÑΓ ñ«ßΓπ» ¬ Σá⌐½á¼ ß α«ñ¿Γѽ∞-
  215. ߬¿¼ »α«µÑßß«¼, Γᬠ¬á¬ «íá »α«µÑßßá «íαáΘáεΓß∩ ó Γáí½¿µÑ Σá⌐½«ó ¬  «ñ¡¿¼  ¿
  216. ΓѼ  ªÑ  ºá»¿ß∩¼. äÑ⌐ßΓó¿Ñ fork ó «Γ¡«ΦÑ¡¿¿ «Γ¬αδΓδσ Σá⌐½«ó »«ñ«í¡« ñÑ⌐ßΓó¿ε
  217. á½ú«α¿Γ¼á dup: ¡«óá∩ ºá»¿ß∞ ó Γáí½¿µÑ  »«½∞º«óáΓѽ∞߬¿σ  ñÑß¬α¿»Γ«α«ó  Σá⌐½á
  218. π¬áºδóáÑΓ  ¡á  ºá»¿ß∞ ó ú½«íá½∞¡«⌐ Γáí½¿µÑ Σá⌐½«ó, ß««ΓóÑΓßΓóπεΘπε «Γ¬αδΓ«¼π
  219. Σá⌐½π. ä½∩ dup, «ñ¡á¬«, ºá»¿ß¿ ó Γáí½¿µÑ »«½∞º«óáΓѽ∞߬¿σ ñÑß¬α¿»Γ«α«ó Σá⌐½á
  220. «Γ¡«ß∩Γß∩ ¬ «ñ¡«¼π »α«µÑßßπ; ñ½∩ fork - ¬ αáº¡δ¼ »α«µÑßßá¼.
  221.     Å«ß½Ñ ºáóÑαΦÑ¡¿∩ óßÑσ φΓ¿σ ñÑ⌐ßΓó¿⌐ ∩ñα« ú«Γ«ó« ¬ ß«ºñá¡¿ε ñ½∩ »«α«ªñÑ¡-
  222. ¡«ú« »α«µÑßßá »«½∞º«óáΓѽ∞߬«ú« ¬«¡ΓѬßΓá. ƒñα« óδñѽ∩ÑΓ »á¼∩Γ∞ ñ½∩ áñαÑß¡«-
  223. ú« »α«ßΓαá¡ßΓóá »α«µÑßßá, Ñú« «í½áßΓÑ⌐ ¿ Γáí½¿µ ßΓαá¡¿µ, ß«ºñáÑΓ  ß  »«¼«Θ∞ε
  224. á½ú«α¿Γ¼á dupreg ¬«»¿¿ óßÑσ «í½áßΓÑ⌐ α«ñ¿Γѽ∞߬«ú« »α«µÑßßá ¿ »α¿ß«Ññ¿¡∩ÑΓ ß
  225. »«¼«Θ∞ε á½ú«α¿Γ¼á attachreg ¬áªñπε «í½áßΓ∞ ¬ »«α«ªñÑ¡¡«¼π »α«µÑßßπ. é ß¿ßΓÑ-
  226. ¼Ñ  ß  »«ñ¬áτ¬«⌐  »α«µÑßß«ó ∩ñα« ¬«»¿απÑΓ ß«ñÑন¼«Ñ «í½áßΓÑ⌐, ¡Ñ ∩ó½∩εΘ¿σß∩
  227. «í½áßΓ∩¼¿ αáºñѽ∩Ѽ«⌐ »á¼∩Γ¿, ó ¡«óπε º«¡π «»ÑαáΓ¿ó¡«⌐ »á¼∩Γ¿.  éß»«¼¡¿¼  ¿º
  228. αáºñѽá 6.2.4 « Γ«¼, τΓ« ó »α«ßΓαá¡ßΓóÑ »α«µÑßßá σαá¡¿Γß∩ π¬áºáΓѽ∞ ¡á ß««Γ-
  229. óÑΓßΓóπεΘπε  ºá»¿ß∞  ó Γáí½¿µÑ »α«µÑßß«ó. çᠿ߬½ετÑ¡¿Ñ¼ φΓ«ú« »«½∩, ó« óßѼ
  230. «ßΓá½∞¡«¼ ß«ñÑন¼«Ñ áñαÑß¡«ú« »α«ßΓαá¡ßΓóá »«α«ªñÑ¡¡«ú« »α«µÑßßá  ó  ¡áτá½Ñ
  231. ß«ó»áñáÑΓ  ß ß«ñÑন¼δ¼ »α«ßΓαá¡ßΓóá α«ñ¿Γѽ∞߬«ú« »α«µÑßßá, ¡« ¼«ªÑΓ αáßσ«-
  232. ñ¿Γ∞ß∩ »«ß½Ñ ºáóÑαΦÑ¡¿∩ á½ú«α¿Γ¼á fork. É«ñ¿Γѽ∞߬¿⌐ »α«µÑßß, ¡á»α¿¼Ñα, »«ß-
  233. ½Ñ óδ»«½¡Ñ¡¿∩ fork ¼«ªÑΓ «Γ¬αδΓ∞ ¡«óδ⌐ Σá⌐½, ¬ ¬«Γ«α«¼π »«α«ªñÑ¡¡δ⌐  »α«µÑßß
  234. πªÑ ¡Ñ »«½πτ¿Γ ñ«ßΓπ» áóΓ«¼áΓ¿τÑ߬¿.
  235.     êΓá¬,  ∩ñα«  ºáóÑαΦ¿½« ß«ºñá¡¿Ñ ßΓáΓ¿τÑ߬«⌐ τáßΓ¿ ¬«¡ΓѬßΓá »«α«ªñÑ¡¡«ú«
  236. »α«µÑßßá; ΓÑ»Ñα∞ «¡« »α¿ßΓπ»áÑΓ ¬ ß«ºñá¡¿ε ñ¿¡á¼¿τÑ߬«⌐ τáßΓ¿. ƒñα« ¬«»¿απÑΓ
  237. ó ¡ÑÑ »Ñαóδ⌐ ¬«¡ΓѬßΓ¡δ⌐ πα«óÑ¡∞ α«ñ¿Γѽ∞߬«ú« »α«µÑßßá, ó¬½ετáεΘ¿⌐  ó  ßÑí∩
  238. ß«σαá¡Ñ¡¡δ⌐  αÑú¿ßΓα«óδ⌐ ¬«¡ΓѬßΓ ºáñáτ¿ ¿ ßΓѬ ∩ñαá ó ¼«¼Ñ¡Γ ó맮óá Σπ¡¬µ¿¿
  239. fork. àß½¿ ó ñá¡¡«⌐ αÑ὿ºáµ¿¿ ßΓѬ ∩ñαá ∩ó½∩ÑΓß∩ τáßΓ∞ε  »α«ßΓαá¡ßΓóá  »α«-
  240. µÑßßá,  ∩ñα«  ó ¼«¼Ñ¡Γ ß«ºñá¡¿∩ »α«ßΓαá¡ßΓóá »«α«ªñÑ¡¡«ú« »α«µÑßßá áóΓ«¼áΓ¿-
  241. τÑ߬¿ ß«ºñáÑΓ ¿ ß¿ßΓѼ¡δ⌐ ßΓѬ ñ½∩ ¡Ñú«. é  »α«Γ¿ó¡«¼  ß½πτáÑ  α«ñ¿Γѽ∞߬«¼π
  242. »α«µÑßßπ  »α¿ñÑΓß∩  ß¬«»¿α«óáΓ∞ ó »α«ßΓαá¡ßΓó« »á¼∩Γ¿, áßß«µ¿¿α«óá¡¡«Ñ ß »«-
  243. ᫪ñÑ¡¡δ¼ »α«µÑßß«¼, ßó«⌐ ß¿ßΓѼ¡δ⌐ ßΓѬ. é ½εí«¼ ß½πτáÑ ßΓѬ ∩ñαá  ñ½∩  »«-
  244. ᫪ñÑ¡¡«ú«  »α«µÑßßá  ß«ó»áñáÑΓ  ß ß¿ßΓѼ¡δ¼ ßΓѬ«¼ Ñú« α«ñ¿Γѽ∩. äá½ÑÑ ∩ñα«
  245. ß«ºñáÑΓ ñ½∩ »«α«ªñÑ¡¡«ú« »α«µÑßßá Σ¿¬Γ¿ó¡δ⌐ ¬«¡ΓѬßΓ¡δ⌐ πα«óÑ¡∞ (2), ó ¬«Γ«-
  246. α«¼ ß«ñÑনΓß∩ ß«σαá¡Ñ¡¡δ⌐  αÑú¿ßΓα«óδ⌐  ¬«¡ΓѬßΓ  ¿º  »Ñαó«ú«  ¬«¡ΓѬßΓ¡«ú«
  247. πα«ó¡∩.  ç¡áτÑ¡¿∩ ßτÑΓτ¿¬á ¬«¼á¡ñ (αÑú¿ßΓα PC) ¿ ñαπú¿σ αÑú¿ßΓα«ó, ß«σαá¡∩Ñ-
  248.  
  249.                                     182
  250.  
  251. ¼δÑ ó αÑú¿ßΓα«ó«¼ ¬«¡ΓѬßΓÑ, πßΓá¡áó½¿óáεΓß∩ Γᬿ¼ «íαẫ¼, τΓ«íδ ß  ¿σ  »«-
  252. ¼«Θ∞ε ¼«ª¡« í佫 "ó«ßßΓá¡áó½¿óáΓ∞" ¬«¡ΓѬßΓ »«α«ªñÑ¡¡«ú« »α«µÑßßá, »πßΓ∞ ñá-
  253. ªÑ  »«ß½Ññ¡¿⌐  ÑΘÑ  ¡¿  αáºπ ¡Ñ ¿ß»«½¡∩½ß∩, ¿ τΓ«íδ φëà»α«µÑßß »α¿ ºá»π߬Ñ
  254. óßÑúñá »«¼¡¿½ « Γ«¼, τΓ« «¡ »«α«ªñÑ¡¡δ⌐. ìá»α¿¼Ñα, Ñß½¿ »α«úαá¼¼á ∩ñαá  »α«-
  255. óÑα∩ÑΓ º¡áτÑ¡¿Ñ, σαá¡∩ΘÑÑß∩ ó αÑú¿ßΓαÑ 0, ñ½∩ Γ«ú«, τΓ«íδ óδ∩ß¡¿Γ∞, ∩ó½∩ÑΓß∩
  256. ½¿ ñá¡¡δ⌐ »α«µÑßß α«ñ¿Γѽ∞߬¿¼ ¿½¿ ªÑ »«α«ªñÑ¡¡δ¼, Γ« φΓ« º¡áτÑ¡¿Ñ »ÑαÑ»¿ßδ-
  257. óáÑΓß∩  ó  αÑú¿ßΓα«óδ⌐ ¬«¡ΓѬßΓ »«α«ªñÑ¡¡«ú« »α«µÑßßá, ß«σαá¡Ñ¡¡δ⌐ ó ß«ßΓáóÑ
  258. »Ñαó«ú« πα«ó¡∩. îÑσá¡¿º¼ ß«σαá¡Ñ¡¿∩ ¿ß»«½∞ºπÑΓß∩ Γ«Γ ªÑ, τΓ« ¿ »α¿  »ÑαѬ½ε-
  259. τÑ¡¿¿ ¬«¡ΓѬßΓá (ß¼. »αÑñδñπΘπε ú½áóπ).
  260.  
  261.              É«ñ¿Γѽ∞߬¿⌐ »α«µÑßß
  262. ┌─────────────────────────────────────────────┐         Æáí½¿µá
  263. │ ┌─────────┐   ùáßΓ¡á∩    ÇñαÑß¡«Ñ »α«ßΓαá¡- │         Σá⌐½«ó
  264. │ │ Äí½áßΓ∞ │   Γáí½¿µá      ßΓó« »α«µÑßßá    │       ┌─────────┐
  265. │ │ ñá¡¡δσ  │   «í½áßΓÑ⌐  ┌──────────────────┐│       │    ∙    │
  266. │ └─────────┘   »α«µÑßßá  │ ÄΓ¬αδΓδÑ Σá⌐½δ ─∙││∙─ ┐   │    ∙    │
  267. │      │        ┌──────┐  │                  ││   ∙   │    ∙    │
  268. │      ∙─ ─ ─ ┐ │      ├ ┐│ ÆÑ¬πΘ¿⌐ ¬áΓὫú ─││┐  │   ├─────────┤
  269. │             ∙ ├──────┤ ∙│                  ││∙  ∙─ ─│         │
  270. │ ┌─────────┐ └ ┤      │ ││ êº¼Ñ¡Ñ¡¡δ⌐ ¬«αÑ¡∞│││  │   │         │
  271. │ │  æΓѬ   │   ├──────┤ ∙└──────────────────┘│∙  ∙   ├─────────┤
  272. │ │ ºáñáτ¿  ├ ─ ┤      │ │┌──────────────────┐││  │   │    ∙    │
  273. │ └─────────┘   └──────┘ ∙│         ∙        ││∙  ∙   │    ∙    │
  274. │                        ││         ∙        │││  │   │    ∙    │
  275. │                        ∙│         ∙        ││∙  ∙   ├─────────┤
  276. │      ∙─ ─ ─ ─ ─ ─ ─ ─ ─┘│     æΓѬ ∩ñαá    │││  ├ ─ ┤         │
  277. │      │                  └──────────────────┘│∙  ∙   │         │
  278. └─────────────────────────────────────────────┘│  │   ├─────────┤
  279.        ∙                                       ∙  ∙   │    ∙    │
  280.   ┌────┴────┐                                  │  │   │    ∙    │
  281.   │Éáºñѽ∩Ñ-│                                  ∙  ∙   │    ∙    │
  282.   │   ¼á∩   │                                  │  │   ├─────────┤
  283.   │ «í½áßΓ∞ │                                  ∙  ∙─ ─│         │
  284.   │ ¬«¼á¡ñ  │                                  │  │   │         │
  285.   └────┬────┘                                  ∙  ∙   ├─────────┤
  286.        ∙                                       │  │   └─────────┘
  287.        └ ─ ─ ─ ─ ─ ─ ─ ─ ┐                     ∙  ∙
  288. ┌─────────────────────────────────────────────┐└ ─│┐    Æáí½¿µá
  289. │ ┌─────────┐   ùáßΓ¡á∩  │ ÇñαÑß¡«Ñ »α«ßΓαá¡- │   ∙∙    Σá⌐½«ó
  290. │ │ Äí½áßΓ∞ │   Γáí½¿µá  ∙   ßΓó« »α«µÑßßá    │   ││  ┌─────────┐
  291. │ │ ñá¡¡δσ  │   «í½áßΓÑ⌐ │┌──────────────────┐│   ∙∙  │    ∙    │
  292. │ └─────────┘   »α«µÑßßá ∙│ ÄΓ¬αδΓδÑ Σá⌐½δ ─∙││∙─ ┘│  │    ∙    │
  293. │      │        ┌──────┐ ││                  ││    ∙  │    ∙    │
  294. │      ∙─ ─ ─ ┐ │      ├─∙│ ÆÑ¬πΘ¿⌐ ¬áΓὫú ─││┐   │  ├─────────┤
  295. │             ∙ ├──────┤  │                  ││∙   ∙─ ┤         │
  296. │ ┌─────────┐ └ ┤      │  │ êº¼Ñ¡Ñ¡¡δ⌐ ¬«αÑ¡∞││└ ─ ─ ─│         │
  297. │ │  æΓѬ   │   ├──────┤  └──────────────────┘│       ├─────────┤
  298. │ │ ºáñáτ¿  ├ ─ ┤      │  ┌──────────────────┐│       │    ∙    │
  299. │ └─────────┘   └──────┘  │         ∙        ││       │    ∙    │
  300. │                         │         ∙        ││       ├─────────┤
  301. │                         │     æΓѬ ∩ñαá    ││       │         │
  302. │                         └──────────────────┘│       │         │
  303. └─────────────────────────────────────────────┘       ├─────────┤
  304.              Å«α«ªñÑ¡¡δ⌐ »α«µÑßß                      │    ∙    │
  305.                                                       │    ∙    │
  306.                                                       └─────────┘
  307.  
  308.     É¿ßπ¡«¬ 7.3.  æ«ºñá¡¿Ñ ¬«¡ΓѬßΓá ¡«ó«ú« »α«µÑßßá »α¿ óδ»«½¡Ñ-
  309.                   ¡¿¿ Σπ¡¬µ¿¿ fork
  310.  
  311.                                     183
  312.  
  313.  
  314.     àß½¿ ¬«¡ΓѬßΓ »«α«ªñÑ¡¡«ú« »α«µÑßßá ú«Γ«ó, α«ñ¿Γѽ∞߬¿⌐ »α«µÑßß ºáóÑαΦá-
  315. ÑΓ  ßó«ε  α«½∞  ó  óδ»«½¡Ñ¡¿¿ á½ú«α¿Γ¼á fork, »ÑαÑó«ñ∩ »«α«ªñÑ¡¡δ⌐ »α«µÑßß ó
  316. ß«ßΓ«∩¡¿Ñ "ú«Γ«ó¡«ßΓ¿ ¬ ºá»π߬π, ¡áσ«ñ∩ß∞ ó »á¼∩Γ¿" ¿ ó«ºóαáΘá∩ »«½∞º«óáΓѽε
  317. Ñú« ¿ñÑ¡Γ¿Σ¿¬áΓ«α. çáΓѼ, ¿ß»«½∞ºπ∩ «íδτ¡δ⌐ á½ú«α¿Γ¼ »½á¡¿α«óá¡¿∩, ∩ñα«  óδ-
  318. í¿αáÑΓ »«α«ªñÑ¡¡δ⌐ »α«µÑßß ñ½∩ ¿ß»«½¡Ñ¡¿∩ ¿ Γ«Γ "ñ«¿úαδóáÑΓ" ßó«ε α«½∞ ó á½-
  319. ú«α¿Γ¼Ñ  fork. è«¡ΓѬßΓ »«α«ªñÑ¡¡«ú« »α«µÑßßá íδ½ ºáñá¡ α«ñ¿Γѽ∞߬¿¼ »α«µÑß-
  320. ß«¼; ß Γ«τ¬¿ ºαÑ¡¿∩ ∩ñαá ¬áªÑΓß∩,  τΓ«  »«α«ªñÑ¡¡δ⌐  »α«µÑßß  ó«º«í¡«ó½∩ÑΓß∩
  321. »«ß½Ñ  »α¿«ßΓá¡«óá  ó  «ª¿ñá¡¿¿  αÑßπαßá. Å«α«ªñÑ¡¡δ⌐ »α«µÑßß »α¿ óδ»«½¡Ñ¡¿¿
  322. Σπ¡¬µ¿¿ fork αÑ὿ºπÑΓ Γπ τáßΓ∞ »α«úαá¼¼δ, ¡á ¬«Γ«απε π¬áºδóáÑΓ ßτÑΓτ¿¬  ¬«-
  323. ¼á¡ñ,  ó«ßßΓá¡áó½¿óáѼδ⌐ ∩ñα«¼ ¿º ß«σαá¡Ñ¡¡«ú« ¡á πα«ó¡Ñ 2 αÑú¿ßΓα«ó«ú« ¬«¡-
  324. ΓѬßΓá, ¿ »« óδσ«ñÑ ¿º Σπ¡¬µ¿¿ ó«ºóαáΘáÑΓ ¡π½Ñó«Ñ º¡áτÑ¡¿Ñ.
  325.     ìá É¿ßπ¡¬Ñ 7.3 »αÑñßΓáó½Ñ¡á ½«ú¿τÑ߬á∩ ßσѼá óºá¿¼«ñÑ⌐ßΓó¿∩ α«ñ¿Γѽ∞߬«-
  326. ú« ¿ »«α«ªñÑ¡¡«ú« »α«µÑßß«ó ß ñαπú¿¼¿ ßΓαπ¬ΓπαἿ ñá¡¡δσ  ∩ñαá  ßαáºπ  »«ß½Ñ
  327. ºáóÑαΦÑ¡¿∩  ß¿ßΓѼ¡«⌐  Σπ¡¬µ¿¿ fork. êΓá¬, «íá »α«µÑßßá ß«ó¼ÑßΓ¡« »«½∞ºπεΓß∩
  328. Σá⌐½á¼¿, ¬«Γ«αδÑ í뫨 «Γ¬αδΓδ α«ñ¿Γѽ∞߬¿¼ »α«µÑßß«¼  ¬  ¼«¼Ñ¡Γπ  ¿ß»«½¡Ñ¡¿∩
  329. Σπ¡¬µ¿¿  fork,  »α¿ φΓ«¼ º¡áτÑ¡¿Ñ ßτÑΓτ¿¬á ßß佫¬ ¡á ¬áªñδ⌐ ¿º φΓ¿σ Σá⌐½«ó ó
  330. Γáí½¿µÑ Σá⌐½«ó ¡á Ññ¿¡¿µπ í«½∞ΦÑ, τѼ ñ« ó맮óá Σπ¡¬µ¿¿. Å«α«ªñÑ¡¡δ⌐ »α«µÑßß
  331. ¿¼ÑÑΓ ΓÑ ªÑ, τΓ« ¿ α«ñ¿Γѽ∞߬¿⌐ »α«µÑßß, ΓѬπΘ¿⌐ ¿ ¬«α¡Ñó«⌐ ¬áΓὫú¿, º¡áτÑ-
  332. ¡¿Ñ ªÑ ßτÑΓτ¿¬á ßß佫¬ ¡á ¿¡ñѬߠ¬áªñ«ú« ¿º φΓ¿σ ¬áΓὫú«ó ΓᬠªÑ ßΓá¡«ó¿Γß∩
  333. ¡á Ññ¿¡¿µπ í«½∞ΦÑ, τѼ ñ« ó맮óá Σπ¡¬µ¿¿. æ«ñÑন¼«Ñ «í½áßΓÑ⌐ ¬«¼á¡ñ, ñá¡¡δσ
  334. ¿ ßΓѬá (ºáñáτ¿) π «í«¿σ »α«µÑßß«ó ß«ó»áñáÑΓ; »« Γ¿»π «í½áßΓ¿ ¿ óÑαß¿¿  ß¿ß-
  335. ΓѼ¡«⌐ αÑ὿ºáµ¿¿ ¼«ª¡« πßΓá¡«ó¿Γ∞, ¼«úπΓ ½¿ »α«µÑßßδ αáºñѽ∩Γ∞ ßá¼π «í½áßΓ∞
  336. ¬«¼á¡ñ ó Σ¿º¿τÑ߬¿σ áñαÑßáσ.
  337.     Éáßß¼«Γα¿¼  »α¿óÑñÑ¡¡πε  ¡á  É¿ßπ¡¬Ñ 7.4 »α«úαá¼¼π, ¬«Γ«αá∩ »αÑñßΓáó½∩ÑΓ
  338. ß«í«⌐ »α¿¼Ñα αáºñѽѡ¿∩ ñ«ßΓπ»á ¬ Σá⌐½π »α¿ ¿ß»«½¡Ñ¡¿¿ Σπ¡¬µ¿¿ fork. Å«½∞º«-
  339. óáΓѽε ß½ÑñπÑΓ »ÑαÑñáóáΓ∞ φΓ«⌐ »α«úαá¼¼Ñ
  340. ñóá »áαá¼ÑΓαá - ¿¼∩ ßπΘÑßΓóπεΘÑú« Σá⌐½á ¿ ¿¼∩  ß«ºñáóáѼ«ú«  Σá⌐½á.  Åα«µÑßß
  341. «Γ¬αδóáÑΓ  ßπΘÑßΓóπεΘ¿⌐  Σá⌐½, ß«ºñáÑΓ ¡«óδ⌐ Σá⌐½ ¿ - »α¿ πß½«ó¿¿ «ΓßπΓßΓó¿∩
  342. «Φ¿í«¬ - »«α«ªñáÑΓ ¡«óδ⌐ »α«µÑßß. é¡πΓα¿ »α«úαá¼¼δ ∩ñα« ñѽáÑΓ ¬«»¿ε ¬«¡ΓѬ-
  343. ßΓá α«ñ¿Γѽ∞߬«ú« »α«µÑßßá ñ½∩ »«α«ªñÑ¡¡«ú«, »α¿ φΓ«¼  α«ñ¿Γѽ∞߬¿⌐  »α«µÑßß
  344. ¿ß»«½¡∩ÑΓß∩  ó «ñ¡«¼ áñαÑß¡«¼ »α«ßΓαá¡ßΓóÑ, á »«α«ªñÑ¡¡δ⌐ - ó ñαπú«¼. èáªñδ⌐
  345. ¿º »α«µÑß߫󠼫ªÑΓ αáí«ΓáΓ∞ ß« ßó«¿¼¿ ß«íßΓóÑ¡¡δ¼¿ ¬«»¿∩¼¿ ú½«íá½∞¡δσ  »ÑαÑ-
  346. ¼Ñ¡¡δσ fdrd, fdwt ¿ c, á ΓᬪѠ߫ ßó«¿¼¿ ß«íßΓóÑ¡¡δ¼¿ ¬«»¿∩¼¿ ßΓѬ«óδσ »ÑαÑ-
  347. ¼Ñ¡¡δσ  argc ¿ argv, ¡« ¡¿ «ñ¿¡ ¿º ¡¿σ ¡Ñ ¼«ªÑΓ «íαáΘáΓ∞ß∩ ¬ »ÑαѼѡ¡δ¼ ñαπ-
  348. ú«ú« »α«µÑßßá. ÆÑ¼ ¡Ñ ¼Ñ¡ÑÑ, »α¿ óδ»«½¡Ñ¡¿¿ Σπ¡¬µ¿¿ fork ∩ñα«  ñѽáÑΓ  ¬«»¿ε
  349. áñαÑß¡«ú«  »α«ßΓαá¡ßΓóá »Ñαó«ú« »α«µÑßßá ñ½∩ óΓ«α«ú«, ¿ »«α«ªñÑ¡¡δ⌐ »α«µÑßß,
  350. Γᬿ¼ «íαẫ¼, ¡áß½ÑñπÑΓ ñ«ßΓπ» ¬ Σá⌐½á¼ α«ñ¿Γѽ∞߬«ú« (Γ« ÑßΓ∞ ¬ Σá⌐½á¼, ¿¼
  351. αá¡ÑÑ «Γ¬αδΓδ¼ ¿ ß«ºñá¡¡δ¼) ß »αáó«¼ ¿ß»«½∞º«óá¡¿∩ ΓÑσ ªÑ ßá¼δσ ñÑ߬-
  352. α¿»Γ«α«ó.
  353.     É«ñ¿Γѽ∞߬¿⌐ ¿ »«α«ªñÑ¡¡δ⌐ »α«µÑßßδ ¡Ñºáó¿ß¿¼« ñαπú «Γ  ñαπúá,  ¬«¡Ñτ¡«,
  354. óδºδóáεΓ Σπ¡¬µ¿ε rdwrt ¿ ó µ¿¬½Ñ ßτ¿ΓδóáεΓ »« «ñ¡«¼π íá⌐Γπ ¿¡Σ«α¼áµ¿ε ¿º ¿ß-
  355. σ«ñ¡«ú«  Σá⌐½á ¿ »ÑαÑ»¿ßδóáεΓ ÑÑ ó Σá⌐½ óδó«ñá. öπ¡¬µ¿∩ rdwrt ó«ºóαáΘáÑΓ π»-
  356. αáó½Ñ¡¿Ñ, ¬«úñá »α¿ ßτ¿Γδóá¡¿¿ «í¡áαπª¿óáÑΓß∩ ¬«¡Ñµ Σá⌐½á.  ƒñα«  »ÑαÑñ  ΓѼ
  357. πªÑ πóѽ¿τ¿½« º¡áτÑ¡¿∩ ßτÑΓτ¿¬«ó ßß佫¬ ¡á ¿ßσ«ñ¡δ⌐ ¿ αѺπ½∞Γ¿απεΘ¿⌐ Σá⌐½δ ó
  358. Γáí½¿µÑ  Σá⌐½«ó,  ¿  ñÑß¬α¿»Γ«αδ, ¿ß»«½∞ºπѼδÑ ó «í«¿σ »α«µÑßßáσ, áñαÑßπεΓ ¬
  359. «ñ¡¿¼ ¿ ΓѼ ªÑ ßΓα«¬á¼ ó Γáí½¿µÑ. Æá¬¿¼ «íαẫ¼, ñÑß¬α¿»Γ«αδ fdrd ó Γ«¼ ¿  ó
  360. ñαπú«¼  »α«µÑßßáσ  π¬áºδóáεΓ ¡á ºá»¿ß∞ ó Γáí½¿µÑ Σá⌐½«ó, ß««ΓóÑΓßΓóπεΘπε ¿ß-
  361. σ«ñ¡«¼π Σá⌐½π, á ñÑß¬α¿»Γ«αδ, »«ñßΓáó½∩ѼδÑ ó ¬áτÑßΓóÑ fdwt,  -  ¡á  ºá»¿ß∞,
  362. ß««ΓóÑΓßΓóπεΘπε  αѺπ½∞Γ¿απεΘѼπ  Σá⌐½π (Σá⌐½π óδó«ñá). Å«φΓ«¼π «íá »α«µÑßßá
  363. ¡¿¬«úñá ¡Ñ «íαáΓ∩Γß∩ ó¼ÑßΓÑ ¡á τΓÑ¡¿Ñ ¿½¿ ºá»¿ß∞ ¬ «ñ¡«¼π ¿ Γ«¼π ªÑ  áñαÑßπ,
  364. óδτ¿ß½∩Ѽ«¼π ß »«¼«Θ∞ε ß¼ÑΘÑ¡¿∩ ó¡πΓα¿ Σá⌐½á, »«ß¬«½∞¬π ∩ñα« ß¼ÑΘáÑΓ ó¡πΓα¿-
  365. Σá⌐½«óδÑ  π¬áºáΓѽ¿ »«ß½Ñ ¬áªñ«⌐ «»Ñαᵿ¿ τΓÑ¡¿∩ ¿½¿ ºá»¿ß¿. ìÑß¼«Γα∩ ¡á Γ«,
  366. τΓ«, ¬áºá½«ß∞ íδ, ¿º-ºá Γ«ú«, τΓ« »α«µÑßßδ αáß»αÑñѽ∩εΓ ¼Ñªñπ ß«í«⌐  αáí«τπε
  367. ¡áúαπº¬π,  «¡¿ ¬«»¿απεΓ ¿ßσ«ñ¡δ⌐ Σá⌐½ ó ñóá αáºá íδßΓαÑÑ, ß«ñÑন¼«Ñ αѺπ½∞-
  368. Γ¿απεΘÑú« Σá⌐½á ºáó¿ß¿Γ «Γ «τÑαÑñ¡«ßΓ¿, ó ¬«Γ«α«⌐ ∩ñα«  ºá»π߬áÑΓ  »α«µÑßßδ.
  369. àß½¿  ∩ñα« ºá»π߬áÑΓ »α«µÑßßδ Γá¬, τΓ« «¡¿ ¿ß»«½¡∩εΓ ß¿ßΓѼ¡δÑ Σπ¡¬µ¿¿ »«»Ñ-
  370. αѼѡ¡« (τÑαÑñπ∩ ¿ ß»áαÑ¡¡δÑ ó맮óδ Σπ¡¬µ¿⌐ read-write), ß«ñÑন¼«Ñ  αѺπ½∞-
  371.  
  372.  
  373.                                     184
  374.  
  375.     ┌────────────────────────────────────────────────────────────┐
  376.     │ #include <fcntl.h>                                         │
  377.     │ int fdrd, fdwt;                                            │
  378.     │ char c;                                                    │
  379.     │                                                            │
  380.     │ main(argc, argv)                                           │
  381.     │     int argc;                                              │
  382.     │     char *argv[];                                          │
  383.     │ {                                                          │
  384.     │     if (argc != 3)                                         │
  385.     │          exit(1);                                          │
  386.     │     if ((fdrd = open(argv[1],O_RDONLY)) == -1)             │
  387.     │          exit(1);                                          │
  388.     │     if ((fdwt = creat(argv[2],0666)) == -1)                │
  389.     │          exit(1);                                          │
  390.     │                                                            │
  391.     │     fork();                                                │
  392.     │     /* «íá »α«µÑßßá ¿ß»«½¡∩εΓ «ñ¡π ¿ Γπ ªÑ »α«úαá¼¼π */    │
  393.     │     rdwrt();                                               │
  394.     │     exit(0);                                               │
  395.     │ }                                                          │
  396.     │                                                            │
  397.     │ rdwrt();                                                   │
  398.     │ {                                                          │
  399.     │     for(;;)                                                │
  400.     │     {                                                      │
  401.     │          if (read(fdrd,&c,1) != 1)                         │
  402.     │                return;                                     │
  403.     │          write(fdwt,&c,1);                                 │
  404.     │     }                                                      │
  405.     │ }                                                          │
  406.     └────────────────────────────────────────────────────────────┘
  407.  
  408.     É¿ßπ¡«¬ 7.4.  Åα«úαá¼¼á, ó ¬«Γ«α«⌐ α«ñ¿Γѽ∞߬¿⌐ ¿ »«α«ªñÑ¡¡δ⌐
  409.                   »α«µÑßßδ αáºñѽ∩εΓ ñ«ßΓπ» ¬ Σá⌐½π
  410.  
  411.  
  412. Γ¿απεΘÑú«  Σá⌐½á  íπñÑΓ  ß«ó»áñáΓ∞ ß ß«ñÑন¼δ¼ ¿ßσ«ñ¡«ú« Σá⌐½á. Éáßß¼«Γα¿¼,
  413. «ñ¡á¬«, ß½πτá⌐, ¬«úñá »α«µÑßßδ ß«í¿αáεΓß∩ ßτ¿ΓáΓ∞ ¿º ¿ßσ«ñ¡«ú« Σá⌐½á  »«ß½Ñ-
  414. ñ«óáΓѽ∞¡«ßΓ∞  ¿º  ñóπσ ß¿¼ó«½«ó "ab". ÅαÑñ»«½«ª¿¼, τΓ« α«ñ¿Γѽ∞߬¿⌐ »α«µÑßß
  415. ßτ¿Γá½ ß¿¼ó«½ "a", ¡« ¡Ñ π߻ѽ ºá»¿ßáΓ∞ Ñú«, Γᬠ¬á¬ ∩ñα«  »ÑαѬ½ετ¿½«ß∞  ¡á
  416. ¬«¡ΓѬßΓ  »«α«ªñÑ¡¡«ú«  »α«µÑßßá.  àß½¿ »«α«ªñÑ¡¡δ⌐ »α«µÑßß ßτ¿ΓδóáÑΓ ß¿¼ó«½
  417. "b" ¿ ºá»¿ßδóáÑΓ Ñú« ó αѺπ½∞Γ¿απεΘ¿⌐ Σá⌐½  ñ«  ó«º«í¡«ó½Ñ¡¿∩  α«ñ¿Γѽ∞߬«ú«
  418. »α«µÑßßá,  ßΓα«¬á  "ab" ó αѺπ½∞Γ¿απεΘѼ Σá⌐½Ñ íπñÑΓ ¿¼ÑΓ∞ ó¿ñ "ba". ƒñα« ¡Ñ
  419. úáαá¡Γ¿απÑΓ ß«ú½áß«óá¡¿Ñ ΓѼ»«ó óδ»«½¡Ñ¡¿∩ »α«µÑßß«ó.
  420.     ÆÑ»Ñα∞ »ÑαÑ⌐ñѼ ¬ »α«úαá¼¼Ñ, »αÑñßΓáó½Ñ¡¡«⌐ ¡á É¿ßπ¡¬Ñ  7.5,  ó  ¬«Γ«α«⌐
  421. »α«µÑßß-»«Γ«¼«¬ ¡áß½ÑñπÑΓ «Γ ßó«Ñú« α«ñ¿Γѽ∩ Σá⌐½«óδÑ ñÑß¬α¿»Γ«αδ 0 ¿ 1 (ß«-
  422. «ΓóÑΓßΓóπεΘ¿Ñ ßΓá¡ñáαΓ¡«¼π óó«ñπ ¿ ßΓá¡ñáαΓ¡«¼π óδó«ñπ). Åα¿ ¬áªñ«¼ óδ»«½¡Ñ-
  423. ¡¿¿  ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿ pipe »α«¿ºó«ñ¿Γß∩ ¡áº¡áτÑ¡¿Ñ ñóπσ Σá⌐½«óδσ ñÑß¬α¿»Γ«-
  424. α«ó ó ¼áßß¿óáσ to_par ¿ to_chil. Åα«µÑßß óδºδóáÑΓ Σπ¡¬µ¿ε fork ¿ ñѽáÑΓ  ¬«-
  425. »¿ε ßó«Ñú« ¬«¡ΓѬßΓá: ¬áªñδ⌐ ¿º »α«µÑß߫󠿼ÑÑΓ ñ«ßΓπ» Γ«½∞¬« ¬ ßó«¿¼ ß«íßΓ-
  426. óÑ¡¡δ¼  ñá¡¡δ¼, ΓᬠªÑ ¬á¬ ¿ ó »αÑñδñπΘѼ »α¿¼ÑαÑ. É«ñ¿Γѽ∞߬¿⌐ »α«µÑßß ºá¬-
  427. αδóáÑΓ Σá⌐½ ßΓá¡ñáαΓ¡«ú« óδó«ñá (ñÑß¬α¿»Γ«α 1) ¿ ñπí½¿απÑΓ ñÑß¬α¿»Γ«α  ºá»¿-
  428. ß¿, ó«ºóαáΘáѼδ⌐ ó ¬á¡á½ to_chil. Å«ß¬«½∞¬π »Ñαó«Ñ ßó«í«ñ¡«Ñ ¼ÑßΓ« ó Γáí½¿µÑ
  429. ñÑß¬α¿»Γ«α«ó α«ñ¿Γѽ∞߬«ú« »α«µÑßßá «íαẫóὫß∞ ó αѺπ½∞ΓáΓÑ Γ«½∞¬« τΓ« óδ-
  430. »«½¡Ñ¡¡«⌐  «»Ñαᵿ¿  ºá¬αδΓ¿∩  (close)  Σá⌐½á óδó«ñá, ∩ñα« »ÑαÑ»¿ßδóáÑΓ Γπñá
  431. ñÑß¬α¿»Γ«α ºá»¿ß¿ ó ¬á¡á½ ¿ φëàñÑß¬α¿»Γ«α  ßΓá¡«ó¿Γß∩  ñÑß¬α¿»Γ«α«¼  Σá⌐½á
  432. ßΓá¡ñáαΓ¡«ú«  óδó«ñá  ñ½∩ to_chil. ÆÑ ªÑ ßá¼δÑ ñÑ⌐ßΓó¿∩ α«ñ¿Γѽ∞߬¿⌐ »α«µÑßß
  433. óδ»«½¡∩ÑΓ ó «Γ¡«ΦÑ¡¿¿ ñÑß¬α¿»Γ«αá Σá⌐½á ßΓá¡ñáαΓ¡«ú« óó«ñá, ºá¼Ñ¡∩∩ Ñú« ñÑß-
  434.  
  435.                                     185
  436.  
  437. ¬α¿»Γ«α«¼ τΓÑ¡¿∩ ¿º ¬á¡á½á to_par.  ê  »«α«ªñÑ¡¡δ⌐  »α«µÑßß  ºá¬αδóáÑΓ  Σá⌐½
  438. ßΓá¡ñáαΓ¡«ú«  óó«ñá  (ñÑß¬α¿»Γ«α  0) ¿ ΓᬠªÑ ñπí½¿απÑΓ ñÑß¬α¿»Γ«α τΓÑ¡¿∩ ¿º
  439. ¬á¡á½á to_chil. Å«ß¬«½∞¬π »Ñαó«Ñ ßó«í«ñ¡«Ñ ¼ÑßΓ« ó Γáí½¿µÑ ñÑß¬α¿»Γ«α«ó Σá⌐-
  440. ½«ó »αѪñÑ í佫 ºá¡∩Γ« Σá⌐½«¼ ßΓá¡ñáαΓ¡«ú« óó«ñá, Ñú« ñÑß¬α¿»Γ«α«¼ ßΓá¡«ó¿Γ-
  441. ß∩ ñÑß¬α¿»Γ«α τΓÑ¡¿∩ ¿º ¬á¡á½á to_chil. Ç¡á½«ú¿τ¡δÑ ñÑ⌐ßΓó¿∩ óδ»«½¡∩εΓß∩ ¿ ó
  442. «Γ¡«ΦÑ¡¿¿ ñÑß¬α¿»Γ«αá Σá⌐½á ßΓá¡ñáαΓ¡«ú« óδó«ñá,  ºá¼Ñ¡∩∩  Ñú«  ñÑß¬α¿»Γ«α«¼
  443. ºá»¿ß¿ ó ¬á¡á½ to_par. ê Γ«Γ, ¿ ñαπú«⌐ »α«µÑßßδ ºá¬αδóáεΓ Σá⌐½δ, ñÑß¬α¿»Γ«αδ
  444.  
  445.     ┌────────────────────────────────────────────────────────────┐
  446.     │ #include <string.h>                                        │
  447.     │ char string[] = "hello world";                             │
  448.     │ main()                                                     │
  449.     │ {                                                          │
  450.     │    int count,i;                                            │
  451.     │    int to_par[2],to_chil[2];    /* ñ½∩ ¬á¡á½«ó α«ñ¿Γѽ∩ ¿  │
  452.     │                                    »«Γ«¼¬á */              │
  453.     │    char buf[256];                                          │
  454.     │    pipe(to_par);                                           │
  455.     │    pipe(to_chil);                                          │
  456.     │    if (fork() == 0)                                        │
  457.     │    {                                                       │
  458.     │       /* óδ»«½¡Ñ¡¿Ñ »«α«ªñÑ¡¡«ú« »α«µÑßßá */               │
  459.     │       close(0); /* ºá¬αδΓ¿Ñ »αѪ¡Ñú« ßΓá¡ñáαΓ¡«ú« óó«ñá */ │
  460.     │       dup(to_chil[0]); /* ñπí½¿α«óá¡¿Ñ ñÑß¬α¿»Γ«αá τΓÑ¡¿∩  │
  461.     │                           ¿º ¬á¡á½á ó »«º¿µ¿ε ßΓá¡ñáαΓ¡«ú« │
  462.     │                           óó«ñá */                         │
  463.     │       close(1); /* ºá¬αδΓ¿Ñ »αѪ¡Ñú« ßΓá¡ñáαΓ¡«ú« óδó«ñá */│
  464.     │       dup(to_par[0]);  /* ñπí½¿α«óá¡¿Ñ ñÑß¬α¿»Γ«αᠺỿ߿  │
  465.     │                           ó ¬á¡á½ ó »«º¿µ¿ε ßΓá¡ñáαΓ¡«ú«   │
  466.     │                           óδó«ñá */                        │
  467.     │       close(to_par[1]); /* ºá¬αδΓ¿Ñ ¡Ñ¡πª¡δσ ñÑß¬α¿»Γ«α«ó  │
  468.     │       close(to_chil[0]);   ¬á¡á½á */                       │
  469.     │       close(to_par[0]);                                    │
  470.     │       close(to_chil[1]);                                   │
  471.     │       for (;;)                                             │
  472.     │       {                                                    │
  473.     │          if ((count = read(0,buf,sizeof(buf))) == 0)       │
  474.     │             exit();                                        │
  475.     │          write(1,buf,count);                               │
  476.     │       }                                                    │
  477.     │    }                                                       │
  478.     │    /* óδ»«½¡Ñ¡¿Ñ α«ñ¿Γѽ∞߬«ú« »α«µÑßßá */                 │
  479.     │    close(1);  /* »ÑαÑ¡áßΓα«⌐¬á ßΓá¡ñáαΓ¡«ú« óó«ñá-óδó«ñá */│
  480.     │    dup(to_chil[1]);                                        │
  481.     │    close(0);                                               │
  482.     │    dup(to_par[0]);                                         │
  483.     │    close(to_chil[1]);                                      │
  484.     │    close(to_par[0]);                                       │
  485.     │    close(to_chil[0]);                                      │
  486.     │    close(to_par[1]);                                       │
  487.     │    for (i = 0; i < 15; i++)                                │
  488.     │    {                                                       │
  489.     │       write(1,string,strlen(string));                      │
  490.     │       read(0,buf,sizeof(buf));                             │
  491.     │    }                                                       │
  492.     │ }                                                          │
  493.     └────────────────────────────────────────────────────────────┘
  494.  
  495.          É¿ßπ¡«¬ 7.5. êß»«½∞º«óá¡¿Ñ Σπ¡¬µ¿⌐ pipe, dup ¿ fork
  496.  
  497.                                     186
  498.  
  499.  
  500. ¬«Γ«αδσ  ó«ºóαáΓ¿½á Σπ¡¬µ¿∩ pipe - σ«α«Φá∩ Γαáñ¿µ¿∩, ó τѼ ¡á¼ ÑΘÑ »αÑñßΓ«¿Γ
  501. πíÑñ¿Γ∞ß∩. é αѺπ½∞ΓáΓÑ, ¬«úñá α«ñ¿Γѽ∞߬¿⌐ »α«µÑßß  »ÑαÑ»¿ßδóáÑΓ  ñá¡¡δÑ  ó
  502. ßΓá¡ñáαΓ¡δ⌐  óδó«ñ,  ºá»¿ß∞ óÑñÑΓß∩ ó ¬á¡á½ to_chil ¿ ñá¡¡δÑ »«ßΓπ»áεΓ ¬ »«-
  503. ᫪ñÑ¡¡«¼π »α«µÑßßπ, ¬«Γ«αδ⌐ ßτ¿ΓδóáÑΓ ¿σ τÑαѺ ßó«⌐ ßΓá¡ñáαΓ¡δ⌐ óó«ñ. è«úñá
  504. ªÑ »«α«ªñÑ¡¡δ⌐ »α«µÑßß »¿ΦÑΓ ñá¡¡δÑ ó ßΓá¡ñáαΓ¡δ⌐ óδó«ñ,  ºá»¿ß∞  óÑñÑΓß∩  ó
  505. ¬á¡á½  to_par  ¿  ñá¡¡δÑ »«ßΓπ»áεΓ ¬ α«ñ¿Γѽ∞߬«¼π »α«µÑßßπ, ßτ¿ΓδóáεΘѼπ ¿σ
  506. τÑαѺ ßó«⌐ ßΓá¡ñáαΓ¡δ⌐ óó«ñ. Æá¬ τÑαѺ ñóá ¬á¡á½á «íá »α«µÑßßá  «í¼Ñ¡¿óáεΓß∩
  507. ß««íΘÑ¡¿∩¼¿.
  508.     ÉѺπ½∞ΓáΓδ  φΓ«⌐  »α«úαá¼¼δ ¡Ñ ºáó¿ß∩Γ «Γ Γ«ú«, ó ¬á¬«⌐ «τÑαÑñ¡«ßΓ¿ »α«-
  509. µÑßßδ óδ»«½¡∩εΓ ßó«¿ ñÑ⌐ßΓó¿∩. Æá¬¿¼ «íαẫ¼, ¡ÑΓ ¡¿¬á¬«⌐ αạ¿µδ, ó«ºóαáΘá-
  510. ÑΓß∩ ½¿ π»αáó½Ñ¡¿Ñ α«ñ¿Γѽ∞߬«¼π »α«µÑßßπ ¿º Σπ¡¬µ¿¿ fork αá¡∞ΦÑ ¿½¿  »«ºªÑ,
  511. τѼ  »«α«ªñÑ¡¡«¼π »α«µÑßßπ. ê ΓᬠªÑ íѺαẽ¿τÑ¡ »«α∩ñ«¬, ó ¬«Γ«α«¼ »α«µÑßßδ
  512. óδºδóáεΓ ß¿ßΓѼ¡δÑ Σπ¡¬µ¿¿ »ÑαÑñ ΓѼ, ¬á¬ ó«⌐Γ¿ ó ßó«⌐ ß«íßΓóÑ¡¡δ⌐ µ¿¬½, ¿í«
  513. «¡¿ ¿ß»«½∞ºπεΓ ¿ñÑ¡Γ¿τ¡δÑ ßΓαπ¬Γπαδ  ∩ñαá.  àß½¿  »α«µÑßß-»«Γ«¼«¬  ¿ß»«½¡∩ÑΓ
  514. Σπ¡¬µ¿ε read αá¡∞ΦÑ, τѼ Ñú« α«ñ¿Γѽ∞ óδ»«½¡¿Γ write, «¡ íπñÑΓ »α¿«ßΓá¡«ó½Ñ¡
  515. ñ« ΓÑσ »«α, »«¬á α«ñ¿Γѽ∞߬¿⌐ »α«µÑßß ¡Ñ »α«¿ºóÑñÑΓ ºá»¿ß∞ ó ¬á¡á½ ¿ ΓѼ ßá-
  516. ¼δ¼ ¡Ñ ó«º«í¡«ó¿Γ óδ»«½¡Ñ¡¿Ñ »«Γ«¼¬á. àß½¿ α«ñ¿Γѽ∞߬¿⌐ »α«µÑßß ºá»¿ßδóáÑΓ ó
  517. ¬á¡á½  ñ« Γ«ú«, ¬á¬ Ñú« »«Γ«¼«¬ »α¿ßΓπ»¿Γ ¬ τΓÑ¡¿ε ¿º ¬á¡á½á, »Ñαóδ⌐ »α«µÑßß
  518. ¡Ñ ß¼«ªÑΓ ó ßó«ε «τÑαÑñ∞ ßτ¿ΓáΓ∞ ñá¡¡δÑ ¿º ßΓá¡ñáαΓ¡«ú« óó«ñá,  »«¬á  óΓ«α«⌐
  519. »α«µÑßß ¡Ñ »α«τ¿ΓáÑΓ óßÑ ¿º ßó«Ñú« ßΓá¡ñáαΓ¡«ú« óó«ñá ¿ ¡Ñ »α«¿ºóÑñÑΓ ºá»¿ß∞
  520. ñá¡¡δσ  ó ßΓá¡ñáαΓ¡δ⌐ óδó«ñ. æ φΓ«ú« ¼ÑßΓá »«α∩ñ«¬ αáí«Γδ ªÑßΓ¬« Σ¿¬ß¿α«óá¡:
  521. ¬áªñδ⌐ »α«µÑßß ºáóÑαΦáÑΓ óδ»«½¡Ñ¡¿Ñ Σπ¡¬µ¿⌐ read ¿ write ¿ ¡Ñ  ¼«ªÑΓ  óδ»«½-
  522. ¡¿Γ∞ ß½ÑñπεΘπε «»Ñαᵿε read ñ« ΓÑσ »«α, »«¬á ñαπú«⌐ »α«µÑßß ¡Ñ óδ»«½¡¿Γ »á-
  523. απ read-write. É«ñ¿Γѽ∞-
  524. ߬¿⌐  »α«µÑßß »«ß½Ñ 15 ¿ΓÑαᵿ⌐ ºáóÑαΦáÑΓ αáí«Γπ; »«α«ªñÑ¡¡δ⌐ »α«µÑßß ¡áΓá½-
  525. ¬¿óáÑΓß∩ ¡á ¬«¡Ñµ Σá⌐½á ("end-of-file"), »«ß¬«½∞¬π ¬á¡á½ ¡Ñ ßó∩ºá¡ í«½∞ΦÑ ¡¿
  526. ß «ñ¡¿¼ ¿º ºá»¿ßδóáεΘ¿σ »α«µÑßß«ó, ¿ Γ«ªÑ ºáóÑαΦáÑΓ αáí«Γπ. àß½¿ »«α«ªñÑ¡¡δ⌐
  527. »α«µÑßß »«»δΓáÑΓß∩ »α«¿ºóÑßΓ¿ ºá»¿ß∞ ó ¬á¡á½ »«ß½Ñ ºáóÑαΦÑ¡¿∩  α«ñ¿Γѽ∞߬«ú«
  528. »α«µÑßßá, «¡ »«½πτ¿Γ ß¿ú¡á½ « Γ«¼, τΓ« ¬á¡á½ ¡Ñ ßó∩ºá¡ ¡¿ ß «ñ¡¿¼ ¿º »α«µÑß-
  529. ß«ó τΓÑ¡¿∩.
  530.     îδ  π»«¼∩¡π½¿  «  Γ«¼, τΓ« σ«α«ΦÑ⌐ Γαáñ¿µ¿Ñ⌐ ó »α«úαá¼¼¿α«óá¡¿¿ ∩ó½∩ÑΓß∩
  531. ºá¬αδΓ¿Ñ ¡Ñ¡πª¡δσ Σá⌐½«óδσ ñÑß¬α¿»Γ«α«ó. é »«½∞ºπ φΓ«ú« ú«ó«α∩Γ Γα¿  ñ«ó«ñá.
  532. é«-»Ñαóδσ, ñÑß¬α¿»Γ«αδ Σá⌐½«ó »«ßΓ«∩¡¡« ¡áσ«ñ∩Γß∩ »«ñ ¬«¡Γα«½Ñ¼ ß¿ßΓѼδ, ¬«-
  533. Γ«αá∩ ¡á¬½áñδóáÑΓ «úαá¡¿τÑ¡¿Ñ ¡á ¿σ ¬«½¿τÑßΓó«. é«-óΓ«αδσ, ó« óαѼ∩ ¿ß»«½¡Ñ-
  534. ¡¿∩ »«α«ªñÑ¡¡«ú« »α«µÑßßá »α¿ßó«Ñ¡¿Ñ ñÑß¬α¿»Γ«α«ó ó ¡«ó«¼ ¬«¡ΓѬßΓÑ ß«σαá¡∩-
  535. ÑΓß∩  (ó  τѼ ¼δ ÑΘÑ πíÑñ¿¼ß∩). çá¬αδΓ¿Ñ ¡Ñ¡πª¡δσ Σá⌐½«ó ñ« ºá»πß¬á »α«µÑßßá
  536. «Γ¬αδóáÑΓ »ÑαÑñ »α«úαἼἿ ó«º¼«ª¡«ßΓ∞ ¿ß»«½¡Ñ¡¿∩ ó "ßΓÑα¿½∞¡δσ"  πß½«ó¿∩σ,
  537. ßó«í«ñ¡δσ  «Γ ½εíδσ ¡Ñ«ª¿ñá¡¡«ßΓÑ⌐, ¿¼Ñ∩ «Γ¬αδΓ묨 Γ«½∞¬« Σá⌐½δ ßΓá¡ñáαΓ¡«ú«
  538. óó«ñá-óδó«ñá ¿ «Φ¿í«¬. ìᬫ¡Ñµ, Σπ¡¬µ¿∩ read ñ½∩ ¬á¡á½á  ó«ºóαáΘáÑΓ  »α¿º¡á¬
  539. ¬«¡µá  Σá⌐½á Γ«½∞¬« ó Γ«¼ ß½πτáÑ, Ñß½¿ ¬á¡á½ ¡Ñ íδ½ «Γ¬αδΓ ñ½∩ ºá»¿ß¿ ¡¿ «ñ-
  540. ¡¿¼ ¿º »α«µÑßß«ó. àß½¿ ßτ¿ΓδóáεΘ¿⌐ »α«µÑßß íπñÑΓ ñÑαªáΓ∞ ñÑß¬α¿»Γ«α ºá»¿ß¿ ó
  541. ¬á¡á½ «Γ¬αδΓδ¼, «¡ ¡¿¬«úñá ¡Ñ πº¡áÑΓ, ºá¬αδ½ ½¿ ºá»¿ßδóáεΘ¿⌐ »α«µÑßß  αáí«Γπ
  542. ¡á ßó«Ñ¼ ¬«¡µÑ ¬á¡á½á ¿½¿ ¡ÑΓ. éδΦÑ»α¿óÑñÑ¡¡á∩ »α«úαἼᠡѠαáí«Γá½á íδ ¡áñ-
  543. ½ÑªáΘ¿¼  «íαẫ¼,  Ñß½¿ íδ »ÑαÑñ óσ«ñ«¼ ó µ¿¬½ óδ»«½¡Ñ¡¿∩ »α«µÑßß«¼-»«Γ«¼¬«¼
  544. ¡Ñ í뫨 ºá¬αδΓδ ñÑß¬α¿»Γ«αδ ºá»¿ß¿ ó ¬á¡á½.
  545.  
  546.  
  547.    E7.2 æêâìÇï¢F
  548.  
  549.     æ¿ú¡á½δ ß««íΘáεΓ »α«µÑßßá¼ « ó«º¡¿¬¡«óÑ¡¿¿ áß¿¡σα«¡¡δσ ß«íδΓ¿⌐.  Å«ß佬á
  550. ß¿ú¡á½«ó »α«¿ºó«ñ¿Γß∩ »α«µÑßßἿ - ñαπú ñαπúπ, ß »«¼«Θ∞ε Σπ¡¬µ¿¿ kill, - ¿½¿
  551. ∩ñα«¼.  é  óÑαß¿¿  V  (óΓ«αá∩ αÑñᬵ¿∩) ß¿ßΓѼδ UNIX ßπΘÑßΓóπεΓ 19 αẽ¿τ¡δσ
  552. ß¿ú¡á½«ó, ¬«Γ«αδÑ ¼«ª¡« ¬½áßß¿Σ¿µ¿α«óáΓ∞ ß½ÑñπεΘ¿¼ «íαẫ¼:
  553.   * æ¿ú¡á½δ, »«ßδ½áѼδÑ ó ß½πτáÑ ºáóÑαΦÑ¡¿∩  óδ»«½¡Ñ¡¿∩  »α«µÑßßá,  Γ«  ÑßΓ∞
  554.     Γ«úñá,  ¬«úñá  »α«µÑßß óδ»«½¡∩ÑΓ Σπ¡¬µ¿ε exit ¿½¿ Σπ¡¬µ¿ε signal ß »áαá-
  555.     ¼ÑΓα«¼ death of child (ú¿íѽ∞ »«Γ«¼¬á);
  556.   * æ¿ú¡á½δ, »«ßδ½áѼδÑ ó ß½πτáѠ󫺡¿¬¡«óÑ¡¿∩ óδºδóáѼδσ  »α«µÑßß«¼  «ß«íδσ
  557.     ß¿Γπᵿ⌐, Γᬿσ ¬á¬ «íαáΘÑ¡¿Ñ ¬ áñαÑßπ, ¡áσ«ñ∩ΘѼπß∩ ºá »αÑñѽἿ ó¿αΓπ-
  558.  
  559.                                     187
  560.  
  561.     á½∞¡«ú«  áñαÑß¡«ú«  »α«ßΓαá¡ßΓóá  »α«µÑßßá, ¿½¿ »«»δΓ¬á ºá»¿ß¿ ó «í½áßΓ∞
  562.     »á¼∩Γ¿, «Γ¬αδΓπε Γ«½∞¬« ñ½∩ τΓÑ¡¿∩ (¡á»α¿¼Ñα, ΓѬßΓ »α«úαá¼¼δ), ¿½¿  »«-
  563.     »δΓ¬á ¿ß»«½¡Ñ¡¿∩ »α¿ó¿½Ñú¿α«óá¡¡«⌐ ¬«¼á¡ñδ, á ΓᬪѠαẽ¿τ¡δÑ á»»áαáΓ¡δÑ
  564.     «Φ¿í¬¿;
  565.   *  æ¿ú¡á½δ, »«ßδ½áѼδÑ ó« óαѼ∩ óδ»«½¡Ñ¡¿∩ ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿ »α¿ ó«º¡¿¬¡«-
  566.     óÑ¡¿¿ ¡Ñ¿ß»αáó¿¼δσ «Φ¿í«¬, Γᬿσ ¬á¬ ¿ßτÑα»á¡¿Ñ  ß¿ßΓѼ¡δσ  αÑßπαß«ó  ó«
  567.     óαѼ∩  óδ»«½¡Ñ¡¿∩  Σπ¡¬µ¿¿  exec  »«ß½Ñ «ßó«í«ªñÑ¡¿∩ ¿ßσ«ñ¡«ú« áñαÑß¡«ú«
  568.     »α«ßΓαá¡ßΓóá (ß¼. αáºñѽ 7.5);
  569.   * æ¿ú¡á½δ, »α¿τ¿¡«⌐ ¬«Γ«αδσ ß½πª¿Γ ó«º¡¿¬¡«óÑ¡¿Ñ ó« óαѼ∩ óδ»«½¡Ñ¡¿∩  ß¿ß-
  570.     ΓѼ¡«⌐  Σπ¡¬µ¿¿ ß«óÑαΦÑ¡¡« ¡Ñ«ª¿ñá¡¡δσ «Φ¿í«¬, Γᬿσ ¬á¬ «íαáΘÑ¡¿Ñ ¬ ¡Ñ-
  571.     ßπΘÑßΓóπεΘÑ⌐ ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿ (»α«µÑßß »ÑαÑñá½ ¡«¼Ñα ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿,
  572.     ¬«Γ«αδ⌐ ¡Ñ ß««ΓóÑΓßΓóπÑΓ ¡¿ «ñ¡«⌐ ¿º ¿¼ÑεΘ¿σß∩ Σπ¡¬µ¿⌐), ºá»¿ß∞ ó ¬á¡á½,
  573.     ¡Ñ ßó∩ºá¡¡δ⌐ ¡¿ ß «ñ¡¿¼ ¿º »α«µÑßß«ó τΓÑ¡¿∩, á ΓᬪѠ¿ß»«½∞º«óá¡¿Ñ ¡Ññ«-
  574.     »πßΓ¿¼«ú« º¡áτÑ¡¿∩ ó »áαá¼ÑΓαÑ "reference" ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿ lseek.  èá-
  575.     ºá½«ß∞  íδ, í«½ÑÑ ½«ú¿τ¡« ó Γᬿσ ß½πτá∩σ ó¼ÑßΓ« »«ß佬¿ ß¿ú¡á½á ó«ºóαá-
  576.     ΘáΓ∞ ¬«ñ «Φ¿í¬¿, «ñ¡á¬« ß »αá¬Γ¿τÑ߬«⌐ Γ«τ¬¿ ºαÑ¡¿∩ ñ½∩  áóáα¿⌐¡«ú«  ºá-
  577.     óÑαΦÑ¡¿∩  »α«µÑßß«ó, ó ¬«Γ«αδσ ó«º¡¿¬áεΓ »«ñ«í¡δÑ «Φ¿í¬¿, í«½ÑÑ »αÑñ»«τ-
  578.     Γ¿Γѽ∞¡δ¼ ∩ó½∩ÑΓß∩ ¿¼Ñ¡¡« ¿ß»«½∞º«óá¡¿Ñ ß¿ú¡á½«ó (*);
  579.   *  æ¿ú¡á½δ, »«ßδ½áѼδÑ »α«µÑßßπ, ¬«Γ«αδ⌐ óδ»«½¡∩ÑΓß∩ ó αѪ¿¼Ñ ºáñáτ¿, ¡á»-
  580.     α¿¼Ñα, ß¿ú¡á½ ΓαÑó«ú¿ (alarm), »«ßδ½áѼδ⌐ »« ¿ßΓÑτÑ¡¿¿ «»αÑñѽѡ¡«ú« »Ñ-
  581.     α¿«ñá óαѼѡ¿, ¿½¿ »α«¿ºó«½∞¡δÑ ß¿ú¡á½δ, ¬«Γ«α묨 «í¼Ñ¡¿óáεΓß∩ »α«µÑßßδ,
  582.     ¿ß»«½∞ºπεΘ¿Ñ Σπ¡¬µ¿ε kill;
  583.   * æ¿ú¡á½δ, ßó∩ºá¡¡δÑ ß ΓÑନ¡á½∞¡δ¼ óºá¿¼«ñÑ⌐ßΓó¿Ñ¼, ¡á»α¿¼Ñα, ß  "ºáó¿ßá-
  584.     ¡¿Ñ¼" ΓÑନ¡á½á (¬«úñá ß¿ú¡á½-¡«ß¿Γѽ∞ ¡á ΓÑନ¡á½∞¡«⌐ ½¿¡¿¿ »αѬαáΘáÑΓ-
  585.     ß∩ »« ½εí«⌐ »α¿τ¿¡Ñ) ¿½¿ ß ¡áªáΓ¿Ñ¼ ¬½áó¿Φ "break" ¿ "delete" ¡á ¬½áó¿á-
  586.     ΓπαÑ ΓÑନ¡á½á;
  587.   * æ¿ú¡á½δ, ß »«¼«Θ∞ε ¬«Γ«αδσ »α«¿ºó«ñ¿Γß∩ Γαáßß¿α«ó¬á óδ»«½¡Ñ¡¿∩ »α«µÑßßá.
  588.     ôß½«ó¿∩  »α¿¼Ñ¡Ñ¡¿∩  ß¿ú¡á½«ó  ¬áªñ«⌐  úαπ»»δ íπñπΓ αáßß¼«ΓαÑ¡δ ó φΓ«⌐ ¿
  589. »«ß½ÑñπεΘ¿σ ú½áóáσ.
  590.     è«¡µÑ»µ¿∩ ß¿ú¡á½«ó ¿¼ÑÑΓ ¡Ñ߬«½∞¬« áß»Ñ¬Γ«ó, ßó∩ºá¡¡δσ ß ΓѼ, ¬á¬¿¼  «í-
  591. αẫ¼ ∩ñα« »«ßδ½áÑΓ ß¿ú¡á½ »α«µÑßßπ, ¬á¬¿¼ «íαẫ¼ »α«µÑßß «íαáíáΓδóáÑΓ ß¿ú-
  592. ¡á½ ¿ π»αáó½∩ÑΓ αÑᬵ¿Ñ⌐ ¡á ¡Ñú«. Å«ßδ½á∩ ß¿ú¡á½ »α«µÑßßπ, ∩ñα« πßΓá¡áó½¿óá-
  593. ÑΓ ó Ññ¿¡¿µπ αáºα∩ñ ó »«½Ñ ß¿ú¡á½á ºá»¿ß¿ Γáí½¿µδ »α«µÑßß«ó, ß««ΓóÑΓßΓóπεΘ¿⌐
  594. Γ¿»π  ß¿ú¡á½á. àß½¿ »α«µÑßß ¡áσ«ñ¿Γß∩ ó ß«ßΓ«∩¡¿¿ »α¿«ßΓá¡«óá ß »α¿«α¿ΓÑΓ«¼,
  595. ñ«»π߬áεΘ¿¼ »αÑαδóá¡¿∩, ∩ñα« ó«º«í¡«ó¿Γ Ñú« óδ»«½¡Ñ¡¿Ñ. ìá φΓ«¼ α«½∞  «Γ»αá-
  596. ó¿Γѽ∩  ß¿ú¡á½á  (»α«µÑßßá ¿½¿ ∩ñαá) ¿ßτÑα»δóáÑΓß∩. Åα«µÑßß ¼«ªÑΓ ºá»«¼¿¡áΓ∞
  597. ß¿ú¡á½δ αẽ¿τ¡δσ Γ¿»«ó, ¡« ¡Ñ ¿¼ÑÑΓ ó«º¼«ª¡«ßΓ¿ ºá»«¼¿¡áΓ∞ ¬«½¿τÑßΓó« »«½π-
  598. τáѼδσ ß¿ú¡á½«ó ¬áªñ«ú« Γ¿»á. ìá»α¿¼Ñα, Ñß½¿ »α«µÑßß »«½πτáÑΓ ß¿ú¡á½ «  "ºá-
  599. ó¿ßá¡¿¿" ¿½¿ «í πñá½Ñ¡¿¿ »α«µÑßßá ¿º ß¿ßΓѼδ, «¡ πßΓá¡áó½¿óáÑΓ ó Ññ¿¡¿µπ ß«-
  600. «ΓóÑΓßΓóπεΘ¿Ñ  αáºα∩ñδ  ó  »«½Ñ ß¿ú¡á½«ó Γáí½¿µδ »α«µÑßß«ó, ¡« ¡Ñ ¼«ªÑΓ ß¬á-
  601. ºáΓ∞, ß¬«½∞¬« φ¬ºÑ¼»½∩α«ó ß¿ú¡á½á ¬áªñ«ú« Γ¿»á «¡ »«½πτ¿½.
  602.     ƒñα« »α«óÑα∩ÑΓ »«½πτÑ¡¿Ñ ß¿ú¡á½á, ¬«úñá »α«µÑßß  ß«í¿αáÑΓß∩  »ÑαÑ⌐Γ¿  ¿º
  603. αѪ¿¼á  ∩ñαá ó αѪ¿¼ ºáñáτ¿, á ΓᬪѠ¬«úñá «¡ »ÑαÑσ«ñ¿Γ ó ß«ßΓ«∩¡¿Ñ »α¿«ßΓá-
  604. ¡«óá ¿½¿ óδσ«ñ¿Γ ¿º φΓ«ú« ß«ßΓ«∩¡¿∩ ß ñ«ßΓáΓ«τ¡« ¡¿º¬¿¼ »α¿«α¿ΓÑΓ«¼ »½á¡¿α«-
  605. óá¡¿∩ (ß¼. É¿ßπ¡«¬ 7.6). ƒñα« «íαáíáΓδóáÑΓ ß¿ú¡á½δ Γ«½∞¬« Γ«úñá, ¬«úñá  »α«-
  606. µÑßß  ó«ºóαáΘáÑΓß∩  ¿º  αѪ¿¼á ∩ñαá ó αѪ¿¼ ºáñáτ¿. Æá¬¿¼ «íαẫ¼, ß¿ú¡á½ ¡Ñ
  607. «¬áºδóáÑΓ ¡Ñ¼Ññ½Ñ¡¡«ú« ó«ºñÑ⌐ßΓó¿∩ ¡á »«óÑñÑ¡¿Ñ »α«µÑßßá, ¿ß»«½¡∩Ѽ«ú« ó αÑ-
  608. ª¿¼Ñ ∩ñαá. àß½¿ »α«µÑßß ¿ß»«½¡∩ÑΓß∩ ó αѪ¿¼Ñ ºáñáτ¿, á ∩ñα« ΓѼ óαѼѡѼ «í-
  609. αáíáΓδóáÑΓ »αÑαδóá¡¿Ñ, »«ß½πª¿óΦÑÑ »«ó«ñ«¼ ñ½∩ »«ß佬¿ »α«µÑßßπ ß¿ú¡á½á, ∩ñ-
  610. α« αáß»«º¡áÑΓ ¿ «íαáí«ΓáÑΓ ß¿ú¡á½ »« óδσ«ñÑ ¿º  »αÑαδóá¡¿∩.  Æá¬¿¼  «íαẫ¼,
  611. »α«µÑßß ¡Ñ íπñÑΓ ¿ß»«½¡∩Γ∞ß∩ ó αѪ¿¼Ñ ºáñáτ¿, »«¬á ¬á¬¿Ñ-Γ« ß¿ú¡á½δ «ßΓáεΓß∩
  612. ¡Ñ«íαáí«Γá¡¡δ¼¿.
  613.     ìá É¿ßπ¡¬Ñ 7.7 »αÑñßΓáó½Ñ¡ á½ú«α¿Γ¼, ß »«¼«Θ∞ε ¬«Γ«α«ú« ∩ñα« «»αÑñѽ∩ÑΓ,
  614.  
  615. ───────────────────────────────────────
  616. (*) êß»«½∞º«óá¡¿Ñ ß¿ú¡á½«ó ó ¡Ñ¬«Γ«αδσ «íßΓ«∩Γѽ∞ßΓóáσ »«ºó«½∩ÑΓ  «í¡áαπª¿Γ∞
  617.     «Φ¿í¬¿ »α¿ óδ»«½¡Ñ¡¿¿ »α«úαá¼¼, ¡Ñ »α«óÑα∩εΘ¿σ ¬«ñ ºáóÑαΦÑ¡¿∩ óδºδóáѼδσ
  618.     ß¿ßΓѼ¡δσ Σπ¡¬µ¿⌐ (ß««íΘ¿½ ä.É¿τ¿).
  619.  
  620.  
  621.                                     188
  622.  
  623.  
  624.                                      éδ»«½¡∩ÑΓß∩ ó
  625.                                      αѪ¿¼Ñ ºáñáτ¿
  626.                                        ┌───────┐
  627.                                        │       │       Åα«óÑα¬á
  628.                                        │   1   │       ¿
  629.                            é맮ó Σπ¡¬- │       │  ┌ ─  «íαáí«Γ¬á
  630.                            µ¿¿, »αÑαδ- └┬──────┘  ∙┌ ─ ß¿ú¡á½«ó
  631.                                 óá¡¿Ñ   │ ^   ^─ ─┘∙
  632.                 ÅαÑαδ- ┌─────┐  ┌───────┘ │─ ─│─ ─ ┘
  633.                 óá¡¿Ñ, │     │  │ ┌───────┘   └───┐ é«ºóαáΓ ó
  634.                 ó«ºóαáΓ│     │  │ │ é«ºóαáΓ       │ αѪ¿¼ ºáñáτ¿
  635.                 ¿º »αÑ-│     │  │ │               │
  636.                   αδóá-│     v  v │ éδ»«½¡∩ÑΓ-    │
  637.       ┌───────┐    ¡¿∩ │   ┌──────┴┐ß∩ ó αѪ¿-   ┌┴──────┐
  638.       │       │        └──>│       │¼Ñ ∩ñαá      │       │
  639.       │   9   │<───────────┤   2   ├────────────>│   7   │
  640.       │       │   éδσ«ñ    │       │ ÉѺÑαó¿απÑΓ-│       │
  641.       └───────┘            └┬──────┘          ß∩ └───────┘
  642.   ÅαѬαáΘÑ¡¿Ñ               │     ^                  ∙ çáαѺÑα-
  643.   ßπΘÑßΓó«óá¡¿∩             │─ ─ ─│─ ─ ─ ─ ─ ─ ─ ─ ┐ ∙ ó¿α«óá¡
  644.                             │     │─ ─ ─ ─ ─ ─ ─ ┐ └ ∙─ ─┐
  645.             ┌───────────────┘     └──────┐    ∙∙∙∙∙∙∙∙   Åα«óÑα¬á
  646.             │    Åα¿«ßΓá¡«ó       çá»π߬ │    ∙  └ ─ ─ ─ ß¿ú¡á½«ó
  647.             v                            │    ∙
  648.   Åα¿-┌───────┐                        ┌─┴─────┐ â«Γ«ó ¬
  649.   «ß- │       │    é«º«í¡«ó½Ñ¡¿Ñ       │       │ ºá»π߬π
  650.   Γá- │   4   ├───────────────────────>│   3   │ ó »á¼∩Γ¿
  651.   ¡«ó-│       │                        │       │
  652.   ½Ñ¡ └───┬───┘                        └┬──────┘
  653.   ó »á-   │                             │  ^  ^
  654.   ¼∩Γ¿    │                             │  │  │  ä«ßΓáΓ«τ¡«
  655.           │                             │  │  │  »á¼∩Γ¿
  656.           │                             │  │  └───┐
  657.           │ éδ-                  éδ-    │  │      │
  658.           │ úαπº¬á               úαπº¬á │  │      │  æ«ºñá¡
  659.           │                             │  │çá-  ┌┴──────┐
  660.           │                             │  │úαπº-│       │ fork
  661.           │                             │  │¬á   │   8   │<─────
  662.           │                             │  │     │       │
  663.           │                             │  │     └┬──────┘
  664.           │                             │  │      │
  665.           │                             │  │      │ ìÑñ«ßΓá-
  666.           │                             │  │  ┌───┘ Γ«τ¡«
  667.           │                             │  │  │     »á¼∩Γ¿
  668.           │                             │  │  │  (Γ«½∞¬« ß¿ßΓѼá
  669.           │                             │  │  │   »«ñ¬áτ¬¿)
  670.           v                             v  │  v
  671.       ┌───────┐                        ┌───┴───┐
  672.       │       │    é«º«í¡«ó½Ñ¡¿Ñ       │       │
  673.       │   6   ├───────────────────────>│   5   │
  674.       │       │                        │       │
  675.       └───────┘                        └───────┘
  676.       Åα¿«ßΓá¡«ó½Ñ¡,                   â«Γ«ó ¬ ºá»π߬π,
  677.       óδúαπªÑ¡                         óδúαπªÑ¡
  678.  
  679.     É¿ßπ¡«¬ 7.6. ä¿áúαἼᠻÑαÑσ«ñ«ó »α«µÑßßá ¿º  ß«ßΓ«∩¡¿Ñ  ó  ß«ßΓ«∩¡¿Ñ  ß
  680.                  π¬áºá¡¿Ñ¼ ¼«¼Ñ¡Γ«ó »α«óÑન ¿ «íαáí«Γ¬¿ ß¿ú¡á½«ó
  681.  
  682.  
  683.                                     189
  684.  
  685. »«½πτ¿½  ½¿  »α«µÑßß  ß¿ú¡á½ ¿½¿ ¡ÑΓ. ôß½«ó¿∩, ó ¬«Γ«αδσ Σ«α¼¿απεΓß∩ ß¿ú¡á½δ
  686. Γ¿»á "ú¿íѽ∞ »«Γ«¼¬á", íπñπΓ αáßß¼«ΓαÑ¡δ »«ºªÑ. îδ ΓᬪѠπó¿ñ¿¼, τΓ« »α«µÑßß
  687. ¼«ªÑΓ ¿ú¡«α¿α«óáΓ∞ «Γñѽ∞¡δÑ ß¿ú¡á½δ, Ñß½¿ ó«ß»«½∞ºπÑΓß∩ Σπ¡¬µ¿Ñ⌐ signal.  é
  688. á½ú«α¿Γ¼Ñ issig ∩ñα« »α«ßΓ« úáß¿Γ ¿¡ñ¿¬áµ¿ε ΓÑσ ß¿ú¡á½«ó, ¡á ¬«Γ«αδÑ »α«µÑßß
  689. ¡Ñ  ªÑ½áÑΓ «íαáΘáΓ∞ ó¡¿¼á¡¿Ñ, ¿ »α¿ó½Ñ¬áÑΓ ó¡¿¼á¡¿Ñ »α«µÑßßá ¬« óßѼ «ßΓá½∞-
  690. ¡δ¼ ß¿ú¡á½á¼.
  691.     ┌────────────────────────────────────────────────────────────┐
  692.     │ á½ú«α¿Γ¼ issig     /* »α«óÑα¬á »«½πτÑ¡¿∩ ß¿ú¡á½«ó */       │
  693.     │ óσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩:  «ΓßπΓßΓóπÑΓ                           │
  694.     │ óδσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩: "¿ßΓ¿¡á", Ñß½¿ »α«µÑßß »«½πτ¿½ ß¿ú¡á- │
  695.     │                      ½δ, ¬«Γ«αδÑ Ñú« ¿¡ΓÑαÑßπεΓ            │
  696.     │                      "½«ª∞" - ó »α«Γ¿ó¡«¼ ß½πτáÑ           │
  697.     │ {                                                          │
  698.     │    óδ»«½¡¿Γ∞ »«¬á (»«½Ñ ó ºá»¿ß¿ Γáí½¿µδ »α«µÑßß«ó, ß«ñÑα- │
  699.     │     ªáΘÑÑ ¿¡ñ¿¬áµ¿ε « »«½πτÑ¡¿¿ ß¿ú¡á½á, σαá¡¿Γ ¡Ñ¡π½Ñó«Ñ  │
  700.     │     º¡áτÑ¡¿Ñ)                                              │
  701.     │    {                                                       │
  702.     │       ¡á⌐Γ¿ ¡«¼Ñα ß¿ú¡á½á, »«ß½á¡¡«ú« »α«µÑßßπ;            │
  703.     │       Ñß½¿ (ß¿ú¡á½ Γ¿»á "ú¿íѽ∞ »«Γ«¼¬á")                  │
  704.     │       {                                                    │
  705.     │          Ñß½¿ (ß¿ú¡á½δ ñá¡¡«ú« Γ¿»á ¿ú¡«α¿απεΓß∩)          │
  706.     │             «ßó«í«ñ¿Γ∞ ºá»¿ß¿ Γáí½¿µδ »α«µÑßß«ó, ¬«Γ«αδÑ   │
  707.     │              ß««ΓóÑΓßΓóπεΓ »«Γ«¼¬á¼, »αѬαáΓ¿óΦ¿¼ ßπΘÑßΓó«-│
  708.     │              óá¡¿Ñ;                                        │
  709.     │          ó »α«Γ¿ó¡«¼ ß½πτáÑ Ñß½¿ (ß¿ú¡á½δ ñá¡¡«ú« Γ¿»á »α¿-│
  710.     │           ¡¿¼áεΓß∩)                                        │
  711.     │             ó«ºóαáΓ¿Γ∞ (¿ßΓ¿¡π);                           │
  712.     │       }                                                    │
  713.     │       ó »α«Γ¿ó¡«¼ ß½πτáÑ Ñß½¿ (ß¿ú¡á½ ¡Ñ ¿ú¡«α¿απÑΓß∩)     │
  714.     │          ó«ºóαáΓ¿Γ∞ (¿ßΓ¿¡π);                              │
  715.     │       ßíα«ß¿Γ∞ (»«úáß¿Γ∞) ß¿ú¡á½∞¡δ⌐ αáºα∩ñ, πßΓá¡«ó½Ñ¡¡δ⌐ │
  716.     │        ó ß««ΓóÑΓßΓóπεΘѼ »«½Ñ Γáí½¿µδ »α«µÑßß«ó, σαá¡∩ΘѼ  │
  717.     │        ¿¡ñ¿¬áµ¿ε »«½πτÑ¡¿∩ ß¿ú¡á½á;                        │
  718.     │    }                                                       │
  719.     │    ó«ºóαáΓ¿Γ∞ (½«ª∞);                                      │
  720.     │ }                                                          │
  721.     └────────────────────────────────────────────────────────────┘
  722.  
  723.               É¿ßπ¡«¬ 7.7. Ç½ú«α¿Γ¼ «»«º¡á¡¿∩ ß¿ú¡á½«ó
  724.  
  725.  
  726.  
  727.     E7.2.1 Äíαáí«Γ¬á ß¿ú¡á½«óF
  728.  
  729.     ƒñα«  «íαáíáΓδóáÑΓ  ß¿ú¡á½δ  ó ¬«¡ΓѬßΓÑ Γ«ú« »α«µÑßßá, ¬«Γ«αδ⌐ »«½πτáÑΓ
  730. ¿σ, »«φΓ«¼π τΓ«íδ «íαáí«ΓáΓ∞ ß¿ú¡á½δ, ¡πª¡«  ºá»πßΓ¿Γ∞  »α«µÑßß.  æπΘÑßΓóπÑΓ
  731. Γα¿ ß»«ß«íá «íαáí«Γ¬¿ ß¿ú¡á½«ó: »α«µÑßß ºáóÑαΦáÑΓß∩ »« »«½πτÑ¡¿¿ ß¿ú¡á½á, ¡Ñ
  732. «íαáΘáÑΓ  ó¡¿¼á¡¿Ñ ¡á ß¿ú¡á½ ¿½¿ óδ»«½¡∩ÑΓ «ß«íπε (»«½∞º«óáΓѽ∞߬πε) Σπ¡¬µ¿ε
  733. »« Ñú« »«½πτÑ¡¿¿. ÉÑᬵ¿Ñ⌐ »« π¼«½τá¡¿ε ß« ßΓ«α«¡δ »α«µÑßßá, ¿ß»«½¡∩Ѽ«ú«  ó
  734. αѪ¿¼Ñ  ∩ñαá,  ∩ó½∩ÑΓß∩  ó맮ó Σπ¡¬µ¿¿ exit, «ñ¡á¬« ß »«¼«Θ∞ε Σπ¡¬µ¿¿ signal
  735. »α«µÑßß ¼«ªÑΓ π¬áºáΓ∞ ñαπú¿Ñ ß»Ñµ¿á½∞¡δÑ ñÑ⌐ßΓó¿∩, »α¿¡¿¼áѼδÑ »«  »«½πτÑ¡¿¿
  736. ΓÑσ ¿½¿ ¿¡δσ ß¿ú¡á½«ó.
  737.     æ¿¡Γá¬ß¿ß ó맮óá ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿ signal:
  738.     oldfunction = signal(signum,function);
  739. úñÑ signum - ¡«¼Ñα ß¿ú¡á½á, »α¿ »«½πτÑ¡¿¿ ¬«Γ«α«ú« íπñÑΓ óδ»«½¡Ñ¡« ñÑ⌐ßΓó¿Ñ,
  740. ßó∩ºá¡¡«Ñ  ß  ºá»π߬«¼  »«½∞º«óáΓѽ∞߬«⌐  Σπ¡¬µ¿¿, function - áñαÑß Σπ¡¬µ¿¿,
  741. oldfunction - ó«ºóαáΘáѼ«Ñ Σπ¡¬µ¿Ñ⌐ º¡áτÑ¡¿Ñ. é¼ÑßΓ« áñαÑßá Σπ¡¬µ¿¿  »α«µÑßß
  742. ¼«ªÑΓ »ÑαÑñáóáΓ∞ óδºδóáѼ«⌐ »α«µÑñπαÑ signal τ¿ß½á 1 ¿ 0: Ñß½¿ function = 1,
  743. »α«µÑßß  íπñÑΓ  ¿ú¡«α¿α«óáΓ∞  óßÑ  »«ß½ÑñπεΘ¿Ñ »«ßΓπ»½Ñ¡¿∩ ß¿ú¡á½á ß ¡«¼Ñα«¼
  744.  
  745.                                     190
  746.  
  747. signum («ß«íδ⌐ ß½πτá⌐, ßó∩ºá¡¡δ⌐ ß ¿ú¡«α¿α«ó᡿Ѽ ß¿ú¡á½á "ú¿íѽ∞  »«Γ«¼¬á",
  748. αáßß¼áΓα¿óáÑΓß∩ ó αáºñѽѠ7.4), Ñß½¿ = 0 (º¡áτÑ¡¿Ñ »« π¼«½τá¡¿ε), »α«µÑßß »«
  749. »«½πτÑ¡¿¿ ß¿ú¡á½á ó αѪ¿¼Ñ ∩ñαá ºáóÑαΦáÑΓß∩. é »α«ßΓαá¡ßΓóÑ »α«µÑßßá »«ññÑα-
  750. ª¿óáÑΓß∩ ¼áß߿󠻫½Ñ⌐ ñ½∩ «íαáí«Γ¬¿ ß¿ú¡á½«ó, »« «ñ¡«¼π »«½ε ¡á ¬áªñδ⌐ «»αÑ-
  751. ñѽѡ¡δ⌐ ó ß¿ßΓѼѠ߿ú¡á½. é »«½Ñ, ß««ΓóÑΓßΓóπεΘѼ ß¿ú¡á½π ß π¬áºá¡¡δ¼ ¡«¼Ñ-
  752. α«¼,  ∩ñα« ß«σαá¡∩ÑΓ áñαÑß »«½∞º«óáΓѽ∞߬«⌐ Σπ¡¬µ¿¿, óδºδóáѼ«⌐ »« »«½πτÑ¡¿¿
  753. ß¿ú¡á½á »α«µÑßß«¼. æ»«ß«í «íαáí«Γ¬¿ ß¿ú¡á½«ó «ñ¡«ú« Γ¿»á ¡Ñ ó½¿∩ÑΓ ¡á  «íαá-
  754. í«Γ¬π ß¿ú¡á½«ó ñαπú¿σ Γ¿»«ó.
  755.  
  756.     ┌────────────────────────────────────────────────────────────┐
  757.     │ á½ú«α¿Γ¼ psig   /* «íαáí«Γ¬á ß¿ú¡á½«ó »«ß½Ñ »α«óÑન ¿σ    │
  758.     │                    ßπΘÑßΓó«óá¡¿∩ */                        │
  759.     │ óσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩:  «ΓßπΓßΓóπÑΓ                           │
  760.     │ óδσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩: «ΓßπΓßΓóπÑΓ                           │
  761.     │ {                                                          │
  762.     │    óδíαáΓ∞ ¡«¼Ñα ß¿ú¡á½á ¿º ºá»¿ß¿ Γáí½¿µδ »α«µÑßß«ó;      │
  763.     │    «τ¿ßΓ¿Γ∞ »«½Ñ ß ¡«¼Ñα«¼ ß¿ú¡á½á;                        │
  764.     │    Ñß½¿ (»«½∞º«óáΓѽ∞ αá¡ÑÑ óδºδóá½ Σπ¡¬µ¿ε signal, ß »«-  │
  765.     │     ¼«Θ∞ε ¬«Γ«α«⌐ ßñѽὠπ¬áºá¡¿Ñ ¿ú¡«α¿α«óáΓ∞ ß¿ú¡á½ ñá¡- │
  766.     │     ¡«ú« Γ¿»á)                                             │
  767.     │       ó«ºóαáΓ¿Γ∞ π»αáó½Ñ¡¿Ñ;                               │
  768.     │    Ñß½¿ (»«½∞º«óáΓѽ∞ π¬áºá½ Σπ¡¬µ¿ε, ¬«Γ«απε ¡πª¡« óδ»«½- │
  769.     │     ¡¿Γ∞ »« »«½πτÑ¡¿¿ ß¿ú¡á½á)                             │
  770.     │    {                                                       │
  771.     │        ¿º »α«ßΓαá¡ßΓóá »α«µÑßßá óδíαáΓ∞ »«½∞º«óáΓѽ∞߬¿⌐   │
  772.     │         ó¿αΓπá½∞¡δ⌐ áñαÑß Σπ¡¬µ¿¿ «íαáí«Γ¬¿ ß¿ú¡á½á;       │
  773.     │        /* ß½ÑñπεΘ¿⌐ «»ÑαáΓ«α ¿¼ÑÑΓ ¡ÑªÑ½áΓѽ∞¡δÑ »«í«τ¡δÑ  │
  774.     │           φΣΣѬΓδ */                                       │
  775.     │        «τ¿ßΓ¿Γ∞ »«½Ñ ó »α«ßΓαá¡ßΓóÑ »α«µÑßßá, ß«ñÑαªáΘÑÑ   │
  776.     │         áñαÑß Σπ¡¬µ¿¿ «íαáí«Γ¬¿ ß¿ú¡á½á;                   │
  777.     │        ó¡ÑßΓ¿ ¿º¼Ñ¡Ñ¡¿∩ ó »«½∞º«óáΓѽ∞߬¿⌐ ¬«¡ΓѬßΓ:       │
  778.     │           ¿ß¬πßßΓóÑ¡¡« ß«ºñáΓ∞ ó ßΓѬѠºáñáτ¿ ºá»¿ß∞, ¿¼¿- │
  779.     │            Γ¿απεΘπε «íαáΘÑ¡¿Ñ ¬ Σπ¡¬µ¿¿ «íαáí«Γ¬¿ ß¿ú¡á½á; │
  780.     │        ó¡ÑßΓ¿ ¿º¼Ñ¡Ñ¡¿∩ ó ß¿ßΓѼ¡δ⌐ ¬«¡ΓѬßΓ:              │
  781.     │           ºá»¿ßáΓ∞ áñαÑß Σπ¡¬µ¿¿ «íαáí«Γ¬¿ ß¿ú¡á½á ó »«½Ñ  │
  782.     │            ßτÑΓτ¿¬á ¬«¼á¡ñ, »α¿¡áñ½ÑªáΘÑÑ ß«σαá¡Ñ¡¡«¼π αÑ- │
  783.     │            ú¿ßΓα«ó«¼π ¬«¡ΓѬßΓπ ºáñáτ¿;                    │
  784.     │        ó«ºóαáΓ¿Γ∞ π»αáó½Ñ¡¿Ñ;                              │
  785.     │    }                                                       │
  786.     │    Ñß½¿ (ß¿ú¡á½ ΓαÑíπÑΓ ñá¼»¿α«óá¡¿∩ «íαáºá »α«µÑßßá ó »á- │
  787.     │     ¼∩Γ¿)                                                  │
  788.     │    {                                                       │
  789.     │        ß«ºñáΓ∞ ó ΓѬπΘѼ ¬áΓὫúÑ Σá⌐½ ß ¿¼Ñ¡Ñ¼ "core";    │
  790.     │        »ÑαÑ»¿ßáΓ∞ ó Σá⌐½ "core" ß«ñÑন¼«Ñ »«½∞º«óáΓѽ∞߬«-│
  791.     │         ú« ¬«¡ΓѬßΓá;                                      │
  792.     │    }                                                       │
  793.     │    ¡Ñ¼Ññ½Ñ¡¡« ºá»πßΓ¿Γ∞ á½ú«α¿Γ¼ exit;                     │
  794.     │ }                                                          │
  795.     └────────────────────────────────────────────────────────────┘
  796.  
  797.               É¿ßπ¡«¬ 7.8. Ç½ú«α¿Γ¼ «íαáí«Γ¬¿ ß¿ú¡á½«ó
  798.  
  799.  
  800.     ÄíαáíáΓδóá∩  ß¿ú¡á½ (É¿ßπ¡«¬ 7.8), ∩ñα« «»αÑñѽ∩ÑΓ Γ¿» ß¿ú¡á½á ¿ «τ¿ΘáÑΓ
  801. (úáß¿Γ) αáºα∩ñ ó ºá»¿ß¿ Γáí½¿µδ »α«µÑßß«ó, ß««ΓóÑΓßΓóπεΘ¿⌐ ñá¡¡«¼π Γ¿»π ß¿ú-
  802. ¡á½á ¿ πßΓá¡«ó½Ñ¡¡δ⌐ ó ¼«¼Ñ¡Γ »«½πτÑ¡¿∩ ß¿ú¡á½á »α«µÑßß«¼. àß½¿ Σπ¡¬µ¿¿  «í-
  803. αáí«Γ¬¿  ß¿ú¡á½á  »α¿ßó«Ñ¡«  º¡áτÑ¡¿Ñ »« π¼«½τá¡¿ε, ∩ñα« ó «Γñѽ∞¡δσ ß½πτá∩σ
  804. »ÑαÑñ ºáóÑαΦÑ¡¿Ñ¼ »α«µÑßßá ßíαáßδóáÑΓ ¡á ó¡ÑΦ¡¿⌐ ¡«ß¿Γѽ∞ (ñá¼»¿απÑΓ)  «íαáº
  805. »α«µÑßßá  ó »á¼∩Γ¿ (ß¼. π»α᪡ѡ¿Ñ 7.7). äá¼»¿α«óá¡¿Ñ πñ«í¡« ñ½∩ »α«úαá¼¼¿ß-
  806.  
  807.                                     191
  808.  
  809. Γ«ó ΓѼ, τΓ« »«ºó«½∩ÑΓ πßΓá¡«ó¿Γ∞ »α¿τ¿¡π ºáóÑαΦÑ¡¿∩ »α«µÑßßá ¿  »«ßαÑñßΓó«¼
  810. φΓ«ú«  óÑßΓ¿ «Γ½áñ¬π »α«úαá¼¼. ƒñα« ñá¼»¿απÑΓ ß«ßΓ«∩¡¿Ñ »á¼∩Γ¿ »α¿ »«ßΓπ»½Ñ-
  811. ¡¿¿ ß¿ú¡á½«ó, ¬«Γ«αδÑ ß««íΘáεΓ « ¬á¬¿σ-¡¿íπñ∞ «Φ¿í¬áσ ó  óδ»«½¡Ñ¡¿¿  »α«µÑß-
  812. ß«ó,  ¬á¬  ¡á»α¿¼Ñα,  »«»δΓ¬á ¿ß»«½¡Ñ¡¿∩ ºá»αÑΘÑ¡¡«⌐ ¬«¼á¡ñδ ¿½¿ «íαáΘÑ¡¿Ñ ¬
  813. áñαÑßπ, ¡áσ«ñ∩ΘѼπß∩ ºá »αÑñѽἿ ó¿αΓπá½∞¡«ú« áñαÑß¡«ú«  »α«ßΓαá¡ßΓóá  »α«-
  814. µÑßßá. ƒñα« ¡Ñ ñá¼»¿απÑΓ ß«ßΓ«∩¡¿Ñ »á¼∩Γ¿, Ñß½¿ ß¿ú¡á½ ¡Ñ ßó∩ºá¡ ß »α«úαá¼¼-
  815. ¡«⌐  «Φ¿í¬«⌐.  ìá»α¿¼Ñα,  »αÑαδóá¡¿Ñ, óδºóá¡¡«Ñ ¡áªáΓ¿Ñ¼ ¬½áó¿Φ "delete" ¿½¿
  816. "break" ¡á ΓÑନ¡á½Ñ, ¿¼ÑÑΓ ßó«¿¼ αѺπ½∞ΓáΓ«¼ »«ß佬π ß¿ú¡á½á, ¬«Γ«αδ⌐ ß««í-
  817. ΘáÑΓ « Γ«¼, τΓ« »«½∞º«óáΓѽ∞ σ«τÑΓ αá¡∞ΦÑ óαѼѡ¿ ºáóÑαΦ¿Γ∞  »α«µÑßß,  ó  Γ«
  818. óαѼ∩ ¬á¬ ß¿ú¡á½ « "ºáó¿ßá¡¿¿" ∩ó½∩ÑΓß∩ ßó¿ñÑΓѽ∞ßΓó«¼ ¡áαπΦÑ¡¿∩ ßó∩º¿ ß αÑ-
  819. ú¿ßΓαᵿ«¡¡δ¼  ΓÑନ¡á½«¼.  ¥Γ¿  ß¿ú¡á½δ  ¡Ñ ßó∩ºá¡δ ß «Φ¿í¬á¼¿ ó »α«ΓѬ᡿¿
  820. »α«µÑßßá. æ¿ú¡á½ « óδσ«ñÑ (quit), «ñ¡á¬«, óδºδóáÑΓ ßíα«ß  ß«ßΓ«∩¡¿∩  »á¼∩Γ¿,
  821. ¡Ñß¼«Γα∩  ¡á  Γ«,  τΓ« «¡ ó«º¡¿¬áÑΓ ºá »αÑñѽἿ óδ»«½¡∩Ѽ«ú« »α«µÑßßá. ¥Γ«Γ
  822. ß¿ú¡á½, «íδτ¡« óδºδóáѼδ⌐ «ñ¡«óαѼѡ¡δ¼ ¡áªáΓ¿Ñ¼ ¬½áó¿Φ <Ctrl/│>, ñáÑΓ »α«ú-
  823. αá¼¼¿ßΓπ ó«º¼«ª¡«ßΓ∞ »«½πτáΓ∞ ñá¼» ß«ßΓ«∩¡¿∩ »á¼∩Γ¿ ó ½εí«⌐ ¼«¼Ñ¡Γ »«ß½Ñ ºá-
  824. »πß¬á »α«µÑßßá, τΓ« íδóáÑΓ ¡Ñ«íσ«ñ¿¼«, Ñß½¿ »α«µÑßß »«»áñáÑΓ  ó  íÑ߬«¡Ñτ¡δ⌐
  825. µ¿¬½ óδ»«½¡Ñ¡¿∩ «ñ¡¿σ ¿ ΓÑσ ªÑ ¬«¼á¡ñ (ºáµ¿¬½¿óáÑΓß∩).
  826.     àß½¿  »α«µÑßß »«½πτáÑΓ ß¿ú¡á½, ¡á ¬«Γ«αδ⌐ í佫 αÑΦÑ¡« ¡Ñ «íαáΘáΓ∞ ó¡¿¼á-
  827. ¡¿Ñ, óδ»«½¡Ñ¡¿Ñ »α«µÑßßá »α«ñ«½ªáÑΓß∩ Γá¬, ß½«ó¡« ß¿ú¡á½á ¿  ¡Ñ  í佫.  Å«ß-
  828. ¬«½∞¬π ∩ñα« ¡Ñ ßíαáßδóáÑΓ º¡áτÑ¡¿Ñ ß««ΓóÑΓßΓóπεΘÑú« »«½∩, ßó¿ñÑΓѽ∞ßΓóπεΘÑú«
  829. « ¡Ñ«íσ«ñ¿¼«ßΓ¿ ¿ú¡«α¿α«óá¡¿∩ ß¿ú¡á½á ñá¡¡«ú« Γ¿»á, Γ« ¬«úñá ß¿ú¡á½ »«ßΓπ»¿Γ
  830. ó¡«ó∞, »α«µÑßß «»∩Γ∞ ¡Ñ «íαáΓ¿Γ ¡á ¡Ñú« ó¡¿¼á¡¿Ñ. àß½¿ »α«µÑßß »«½πτáÑΓ ß¿ú-
  831. ¡á½, αÑáú¿α«óá¡¿Ñ ¡á ¬«Γ«αδ⌐ í佫 »α¿º¡á¡« ¡Ñ«íσ«ñ¿¼δ¼, ßαáºπ »« ó«ºóαáΘÑ¡¿¿
  832. »α«µÑßßá  ó  αѪ¿¼  ºáñáτ¿  óδ»«½¡∩ÑΓß∩ ºáαá¡ÑÑ πß½«ó½Ñ¡¡«Ñ ñÑ⌐ßΓó¿Ñ, «ñ¡á¬«
  833. »αѪñÑ τѼ »ÑαÑóÑßΓ¿ »α«µÑßß ó αѪ¿¼ ºáñáτ¿,  ∩ñα«  ÑΘÑ  ñ«½ª¡«  »αÑñ»α¿¡∩Γ∞
  834. ß½ÑñπεΘ¿Ñ Φáú¿:
  835.  1.  ƒñα« «íαáΘáÑΓß∩ ¬ ß«σαá¡Ñ¡¡«¼π αÑú¿ßΓα«ó«¼π ¬«¡ΓѬßΓπ ºáñáτ¿ ¿ óδí¿αáÑΓ
  836.     º¡áτÑ¡¿∩ ßτÑΓτ¿¬á ¬«¼á¡ñ ¿ π¬áºáΓѽ∩ óÑαΦ¿¡δ ßΓѬá, ¬«Γ«αδÑ íπñπΓ  ó«ºó-
  837.     αáΘÑ¡δ »«½∞º«óáΓѽ∞߬«¼π »α«µÑßßπ.
  838.  2.  æíαáßδóáÑΓ  ó »α«ßΓαá¡ßΓóÑ »α«µÑßßá »αѪ¡ÑÑ º¡áτÑ¡¿Ñ »«½∩ Σπ¡¬µ¿¿ «íαá-
  839.     í«Γ¬¿ ß¿ú¡á½á ¿ »α¿ßóá¿óáÑΓ Ñ¼π º¡áτÑ¡¿Ñ »« π¼«½τá¡¿ε.
  840.  3. æ«ºñáÑΓ ¡«óπε ºá»¿ß∞ ó ßΓѬѠºáñáτ¿, ó ¬«Γ«απε, »α¿ ¡Ñ«íσ«ñ¿¼«ßΓ¿  óδñÑ-
  841.     ½∩∩  ñ«»«½¡¿Γѽ∞¡πε »á¼∩Γ∞, »ÑαÑ»¿ßδóáÑΓ º¡áτÑ¡¿∩ ßτÑΓτ¿¬á ¬«¼á¡ñ ¿ π¬á-
  842.     ºáΓѽ∩ óÑαΦ¿¡δ ßΓѬá, óδíαá¡¡δÑ αá¡ÑÑ ¿º ß«σαá¡Ñ¡¡«ú« αÑú¿ßΓα«ó«ú«  ¬«¡-
  843.     ΓѬßΓá ºáñáτ¿. æΓѬ ºáñáτ¿ íπñÑΓ óδú½∩ñÑΓ∞ Γá¬, ¬á¬ íπñΓ« »α«µÑßß »α«¿º-
  844.     óѽ  «íαáΘÑ¡¿Ñ ¬ »«½∞º«óáΓѽ∞߬«⌐ Σπ¡¬µ¿¿ («íαáí«Γ¬¿ ß¿ú¡á½á) ó Γ«⌐ Γ«τ-
  845.     ¬Ñ, úñÑ «¡ óδºδóá½ ß¿ßΓѼ¡πε Σπ¡¬µ¿ε ¿½¿ úñÑ ∩ñα« »αÑαóὫ Ñú«  óδ»«½¡Ñ-
  846.     ¡¿Ñ (»ÑαÑñ «»«º¡á¡¿Ñ¼ ß¿ú¡á½á).
  847.  4. é¡«ß¿Γ ¿º¼Ñ¡Ñ¡¿∩ ó ß«σαá¡Ñ¡¡δ⌐ αÑú¿ßΓα«óδ⌐ ¬«¡ΓѬßΓ ºáñáτ¿: πßΓá¡áó½¿óá-
  848.     ÑΓ  º¡áτÑ¡¿Ñ  ßτÑΓτ¿¬á ¬«¼á¡ñ αáó¡δ¼ áñαÑßπ Σπ¡¬µ¿¿ «íαáí«Γ¬¿ ß¿ú¡á½á, á
  849.     º¡áτÑ¡¿Ñ π¬áºáΓѽ∩ óÑαΦ¿¡δ ßΓѬá αáó¡δ¼ ú½πí¿¡Ñ ßΓѬᠺáñáτ¿.
  850.  
  851.     Æá¬¿¼  «íαẫ¼,  »«  ó«ºóαáΘÑ¡¿¿  ¿º  αѪ¿¼á ∩ñαá ó αѪ¿¼ ºáñáτ¿ »α«µÑßß
  852. »α¿ßΓπ»¿Γ ¬ óδ»«½¡Ñ¡¿ε Σπ¡¬µ¿¿ «íαáí«Γ¬¿ ß¿ú¡á½á; »«ß½Ñ ÑÑ ºáóÑαΦÑ¡¿∩ π»αáó-
  853. ½Ñ¡¿Ñ íπñÑΓ »ÑαÑñá¡« ¡á Γ« ¼ÑßΓ« ó »α«úαἼѠ»«½∞º«óáΓѽ∩, úñÑ í佫 »α«¿ºóÑ-
  854. ñÑ¡« «íαáΘÑ¡¿Ñ ¬ ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿ ¿½¿ »α«¿º«Φ½« »αÑαδóá¡¿Ñ, ΓѼ  ßá¼δ¼  ¬á¬
  855. íδ ¿¼¿Γ¿απÑΓß∩ óδσ«ñ ¿º ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿ ¿½¿ »αÑαδóá¡¿∩.
  856.     é  ¬áτÑßΓóÑ »α¿¼Ñαá ¼«ª¡« »α¿óÑßΓ¿ »α«úαá¼¼π (É¿ßπ¡«¬ 7.9), ¬«Γ«αá∩ »α¿-
  857. ¡¿¼áÑΓ ß¿ú¡á½δ « »αÑαδóá¡¿¿ (SIGINT) ¿ ßá¼á »«ßδ½áÑΓ ¿σ (ó αѺπ½∞ΓáΓÑ óδ»«½-
  858. ¡Ñ¡¿∩ Σπ¡¬µ¿¿ kill). ìá É¿ßπ¡¬Ñ 7.10 »αÑñßΓáó½Ñ¡δ Σαáú¼Ñ¡Γδ »α«úαá¼¼¡«ú« ¬«-
  859. ñá, »«½πτÑ¡¡δÑ ó αѺπ½∞ΓáΓÑ ñ¿ßáßßÑ¼í½¿α«óá¡¿∩ ºáúαπº«τ¡«ú« ¼«ñπ½∩ ó  «»Ñαá-
  860. µ¿«¡¡«⌐  ßαÑñÑ  VAX 11/780. Åα¿ óδ»«½¡Ñ¡¿¿ »α«µÑßßá «íαáΘÑ¡¿Ñ ¬ í¿í½¿«ΓÑτ¡«⌐
  861. »α«µÑñπαÑ kill ¿¼ÑÑΓ áñαÑß (ΦÑßΓ¡áñµáΓ¿α¿τ¡δ⌐) ee; φΓá »α«µÑñπαá ó ßó«ε «τÑ-
  862. αÑñ∞, »αѪñÑ τѼ óδºóáΓ∞ ß¿ßΓѼ¡πε Σπ¡¬µ¿ε kill, ¿ß»«½¡∩ÑΓ ¬«¼á¡ñπ chmk (»Ñ-
  863. αÑóÑßΓ¿ »α«µÑßß ó αѪ¿¼ ∩ñαá) »« áñαÑßπ 10a.  ÇñαÑß  ó«ºóαáΓá  ¿º  ß¿ßΓѼ¡«⌐
  864. Σπ¡¬µ¿¿  - 10c. é« óαѼ∩ ¿ß»«½¡Ñ¡¿∩ ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿ ∩ñα« »«ßδ½áÑΓ »α«µÑßßπ
  865. ß¿ú¡á½ « »αÑαδóá¡¿¿. ƒñα« «íαáΘáÑΓ ó¡¿¼á¡¿Ñ ¡á φΓ«Γ ß¿ú¡á½ Γ«úñá, ¬«úñá »α«-
  866. µÑßß ß«í¿αáÑΓß∩ óÑα¡πΓ∞ß∩ ó αѪ¿¼ ºáñáτ¿, óδí¿αá∩ ¿º ß«σαá¡Ñ¡¡«ú«  αÑú¿ßΓα«-
  867. ó«ú«  ¬«¡ΓѬßΓá áñαÑß ó«ºóαáΓá 10c ¿ »«¼ÑΘá∩ Ñú« ó ßΓѬ ºáñáτ¿. Åα¿ φΓ«¼ áñ-
  868.  
  869.                                     192
  870.  
  871. αÑß Σπ¡¬µ¿¿ «íαáí«Γ¬¿ ß¿ú¡á½á, 104, ∩ñα« »«¼ÑΘáÑΓ ó ß«σαá¡Ñ¡¡δ⌐  αÑú¿ßΓα«óδ⌐
  872. ¬«¡ΓѬßΓ ºáñáτ¿. ìá É¿ßπ¡¬Ñ 7.11 »«¬áºá¡δ αẽ¿τ¡δÑ ß«ßΓ«∩¡¿∩ ßΓѬᠺáñáτ¿ ¿
  873. ß«σαá¡Ñ¡¡«ú« αÑú¿ßΓα«ó«ú« ¬«¡ΓѬßΓá.
  874.     é  αáßß¼«ΓαÑ¡¡«¼  á½ú«α¿Γ¼Ñ «íαáí«Γ¬¿ ß¿ú¡á½«ó ¿¼ÑεΓß∩ ¡Ñ¬«Γ«αδÑ ¡Ñß««Γ-
  875. óÑΓßΓó¿∩. ÅÑαó«Ñ ¿º ¡¿σ ¿ ¡á¿í«½ÑÑ ó᪡«Ñ ßó∩ºá¡« ß «τ¿ßΓ¬«⌐ »ÑαÑñ ó«ºóαáΘÑ-
  876. ¡¿Ñ¼ »α«µÑßßá ó αѪ¿¼ ºáñáτ¿ Γ«ú« »«½∩ ó »α«ßΓαá¡ßΓóÑ »α«µÑßßá, ¬«Γ«α«Ñ  ß«-
  877. ñÑαª¿Γ áñαÑß »«½∞º«óáΓѽ∞߬«⌐ Σπ¡¬µ¿¿ «íαáí«Γ¬¿ ß¿ú¡á½á. àß½¿ »α«µÑßßπ ß¡«óá
  878. »«¡áñ«í¿Γß∩  «íαáí«ΓáΓ∞  ß¿ú¡á½, Ñ¼π «»∩Γ∞ »α¿ñÑΓß∩ »α¿íÑú¡πΓ∞ ¬ »«¼«Θ¿ ß¿ß-
  879. ΓѼ¡«⌐ Σπ¡¬µ¿¿ signal. Åα¿ φΓ«¼ ¼«úπΓ ó«º¡¿¬¡πΓ∞ ¡ÑªÑ½áΓѽ∞¡δÑ »«ß½Ññß-
  880.  
  881.           ┌───────────────────────────────────────────┐
  882.           │ #include <signal.h>                       │
  883.           │ main()                                    │
  884.           │ {                                         │
  885.           │      extern catcher();                    │
  886.           │      signal(SIGINT,catcher);              │
  887.           │      kill(0,SIGINT);                      │
  888.           │ }                                         │
  889.           │                                           │
  890.           │ catcher()                                 │
  891.           │ {                                         │
  892.           │ }                                         │
  893.           └───────────────────────────────────────────┘
  894.  
  895.       É¿ßπ¡«¬ 7.9. êßσ«ñ¡δ⌐ ΓѬßΓ »α«úαá¼¼δ »α¿Ñ¼á ß¿ú¡á½«ó
  896.  
  897.     ┌────────────────────────────────────────────────────────┐
  898.     │              ****  VAX  DISASSEMBLER  ****             │
  899.     │                                                        │
  900.     │ _main()                                                │
  901.     │            e4:                                         │
  902.     │            e6:    pushab   Ox18(pc)                    │
  903.     │            ec:    pushl    $Ox2                        │
  904.     │   # ó ß½ÑñπεΘÑ⌐ ßΓα«¬Ñ óδºδóáÑΓß∩ Σπ¡¬µ¿∩ signal       │
  905.     │            ee:    calls    $Ox2,Ox23(pc)               │
  906.     │            f5:    pushl    $Ox2                        │
  907.     │            f7:    clrl     -(sp)                       │
  908.     │   # ó ß½ÑñπεΘÑ⌐ ßΓα«¬Ñ óδºδóáÑΓß∩ í¿í½¿«ΓÑτ¡á∩ »α«µÑñπ-│
  909.     │     αá kill                                            │
  910.     │            f9:    calls    $Ox2,Ox8(pc)                │
  911.     │           100:    ret                                  │
  912.     │           101:    halt                                 │
  913.     │           102:    halt                                 │
  914.     │           103:    halt                                 │
  915.     │ _catcher()                                             │
  916.     │           104:                                         │
  917.     │           106:    ret                                  │
  918.     │           107:    halt                                 │
  919.     │ _kill()                                                │
  920.     │           108:                                         │
  921.     │   # ó ß½ÑñπεΘÑ⌐ ßΓα«¬Ñ óδºδóáÑΓß∩ ó¡πΓαÑ¡¡ÑÑ »αÑαδóá¡¿Ñ│
  922.     │     «»Ñαᵿ«¡¡«⌐ ß¿ßΓÑ¼δ                               │
  923.     │           10a:    chmk     $Ox25                       │
  924.     │           10c:    bgequ    Ox6 <Ox114>                 │
  925.     │           10e:    jmp      Ox14(pc)                    │
  926.     │           114:    clrl     r0                          │
  927.     │           116:    ret                                  │
  928.     └────────────────────────────────────────────────────────┘
  929.     É¿ßπ¡«¬ 7.10. ÉѺπ½∞ΓáΓ ñ¿ßáßßÑ¼í½¿α«óá¡¿∩ »α«úαá¼¼δ »α¿Ñ¼á ß¿ú¡á½«ó
  930.  
  931.                                     193
  932.  
  933.  
  934.  
  935.  
  936.            ä«                                       Å«ß½Ñ
  937.   │                    │                    │                    │
  938.   │                    │                ┌──>├────────────────────┤
  939.   │                    │       éÑαΦ¿¡á  │   │ ì«óá∩ ºá»¿ß∞ ß óδ- │
  940.   │                    │   ┌── ßΓѬᠠ──┘   │   º«ó«¼ Σπ¡¬µ¿¿    │
  941.   │                    │   │   ºáñáτ¿       │                    │
  942.   │                    │   │           ∙∙∙∙>│ÇñαÑß ó«ºóαáΓá (10c)│
  943.   ├────────────────────┤<──┘           ∙    ├────────────────────┤
  944.   │    æΓѬ ºáñáτ¿     │               ∙    │    æΓѬ ºáñáτ¿     │
  945.   │         ñ«         │               ∙    │         ñ«         │
  946.   │ »«½πτÑ¡¿∩  ß¿ú¡á½á │               ∙    │ »«½πτÑ¡¿∩  ß¿ú¡á½á │
  947.   └────────────────────┘               ∙    └────────────────────┘
  948.        æΓѬ ºáñáτ¿                     ∙         æΓѬ ºáñáτ¿
  949.                                        ∙
  950.   ┌────────────────────┐               ∙    ┌────────────────────┐
  951.   │   ÇñαÑß ó«ºóαáΓá   │               ∙    │   ÇñαÑß ó«ºóαáΓá   │
  952.   │  ó »α«µÑßßÑ (10c) ∙│∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙    │  ó »α«µÑßßÑ (104)  │
  953.   ├────────────────────┤                    ├────────────────────┤
  954.   │ æ«σαá¡Ñ¡¡δ⌐ αÑú¿ßΓ-│                    │ æ«σαá¡Ñ¡¡δ⌐ αÑú¿ßΓ-│
  955.   │ α«óδ⌐ ¬«¡ΓѬßΓ ºá- │                    │ α«óδ⌐ ¬«¡ΓѬßΓ ºá- │
  956.   │        ñáτ¿        │                    │        ñáτ¿        │
  957.   └────────────────────┘                    └────────────────────┘
  958.    æ¿ßΓѼ¡δ⌐ ¬«¡ΓѬßΓ¡δ⌐                     æ¿ßΓѼ¡δ⌐ ¬«¡ΓѬßΓ¡δ⌐
  959.          πα«óÑ¡∞ 1                                 πα«óÑ¡∞ 1
  960.     Äí½áßΓ∞ ß«σαá¡Ñ¡¿∩                        Äí½áßΓ∞ ß«σαá¡Ñ¡¿∩
  961.          αÑú¿ßΓα«ó                                 αÑú¿ßΓα«ó
  962.  
  963.     É¿ßπ¡«¬ 7.11.  æΓѬ ºáñáτ¿ ¿ «í½áßΓ∞ ß«σαá¡Ñ¡¿∩ ßΓαπ¬Γπα ∩ñαá
  964.                    ñ« ¿ »«ß½Ñ »«½πτÑ¡¿∩ ß¿ú¡á½á
  965.  
  966.  
  967. Γó¿∩: ¡á»α¿¼Ñα, ¼«úπΓ ß«ºñáßΓ∞ß∩ πß½«ó¿∩ ñ½∩ ¬«¡¬παÑ¡µ¿¿,  Ñß½¿  óΓ«α«⌐  αáº
  968. ß¿ú¡á½ »«ßΓπ»¿Γ ñ« Γ«ú«, ¬á¬ »α«µÑßß »«½πτ¿Γ ó«º¼«ª¡«ßΓ∞ ºá»πßΓ¿Γ∞ ß¿ßΓѼ¡πε
  969. Σπ¡¬µ¿ε.  Å«ß¬«½∞¬π  »α«µÑßß  óδ»«½¡∩ÑΓß∩ ó αѪ¿¼Ñ ºáñáτ¿, ∩ñαπ ß½Ññ«óὫ íδ
  970. »α«¿ºóÑßΓ¿ »ÑαѬ½ετÑ¡¿Ñ ¬«¡ΓѬßΓá, τΓ«íδ πóѽ¿τ¿Γ∞ ΓѼ ßá¼δ¼ Φá¡ßδ  »α«µÑßßá
  971. ¡á  »«½πτÑ¡¿Ñ ß¿ú¡á½á ñ« ¼«¼Ñ¡Γá ßíα«ßá º¡áτÑ¡¿∩ »«½∩ Σπ¡¬µ¿¿ «íαáí«Γ¬¿ ß¿ú-
  972. ¡á½á.
  973.     ¥Γπ ß¿Γπáµ¿ε ¼«ª¡« αẫíαáΓ∞ ¡á »α¿¼ÑαÑ »α«úαá¼¼δ, »αÑñßΓáó½Ñ¡¡«⌐ ¡á É¿-
  974. ßπ¡¬Ñ 7.12. Åα«µÑßß «íαáΘáÑΓß∩ ¬ ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿ signal  ñ½∩  Γ«ú«,  τΓ«íδ
  975. ñáΓ∞  π¬áºá¡¿Ñ  »α¿¡¿¼áΓ∞  ß¿ú¡á½δ « »αÑαδóá¡¿∩σ ¿ ¿ß»«½¡∩Γ∞ »« ¿σ »«½πτÑ¡¿¿
  976. Σπ¡¬µ¿ε sigcatcher. çáΓѼ «¡ »«α«ªñáÑΓ ¡«óδ⌐  »α«µÑßß,  ºá»π߬áÑΓ  ß¿ßΓѼ¡πε
  977. Σπ¡¬µ¿ε  nice,  »«ºó«½∩εΘπε ßñѽáΓ∞ »α¿«α¿ΓÑΓ ºá»πß¬á »α«µÑßßá-α«ñ¿Γѽ∩ ¡¿ªÑ
  978. »α¿«α¿ΓÑΓá Ñú« »«Γ«¼¬á (ß¼. ú½áóπ 8), ¿ óσ«ñ¿Γ ó íÑ߬«¡Ñτ¡δ⌐ µ¿¬½. Å«α«ªñÑ¡-
  979. ¡δ⌐ »α«µÑßß ºáñÑনóáÑΓ ßó«Ñ óδ»«½¡Ñ¡¿Ñ ¡á 5 ßѬπ¡ñ, τΓ«íδ ñáΓ∞ α«ñ¿Γѽ∞߬«-
  980. ¼π »α«µÑßßπ óαѼ∩ ¿ß»«½¡¿Γ∞ ß¿ßΓѼ¡πε Σπ¡¬µ¿ε nice ¿ ß¡¿º¿Γ∞ ßó«⌐ »α¿«α¿ΓÑΓ.
  981. ū߽ѠφΓ«ú« »«α«ªñÑ¡¡δ⌐ »α«µÑßß óσ«ñ¿Γ ó µ¿¬½, ó ¬áªñ«⌐ ¿ΓÑαᵿ¿ ¬«Γ«α«ú« «¡
  982. »«ßδ½áÑΓ α«ñ¿Γѽ∞߬«¼π »α«µÑßßπ ß¿ú¡á½ « »αÑαδóá¡¿¿ (»«ßαÑñßΓó«¼ «íαáΘÑ¡¿∩ ¬
  983. Σπ¡¬µ¿¿ kill). àß½¿ ó αѺπ½∞ΓáΓÑ «Φ¿í¬¿, ¡á»α¿¼Ñα, ¿º-ºá Γ«ú«, τΓ« α«ñ¿Γѽ∞-
  984. ߬¿⌐ »α«µÑßß í«½∞ΦÑ ¡Ñ ßπΘÑßΓóπÑΓ, kill ºáóÑαΦáÑΓß∩, Γ« ºáóÑαΦáÑΓß∩ ¿ »«α«ª-
  985. ñÑ¡¡δ⌐ »α«µÑßß. éß∩ ¿ñÑ∩ ß«ßΓ«¿Γ ó Γ«¼, τΓ« α«ñ¿Γѽ∞߬«¼π  »α«µÑßßπ  ß½ÑñπÑΓ
  986. ºá»π߬áΓ∞  Σπ¡¬µ¿ε «íαáí«Γ¬¿ ß¿ú¡á½á »α¿ ¬áªñ«¼ »«½πτÑ¡¿¿ ß¿ú¡á½á « »αÑαδóá-
  987. ¡¿¿. öπ¡¬µ¿∩ «íαáí«Γ¬¿ ß¿ú¡á½á óδó«ñ¿Γ ß««íΘÑ¡¿Ñ ¿ ß¡«óá «íαáΘáÑΓß∩ ¬  Σπ¡¬-
  988. µ¿¿  signal  »α¿  «τÑαÑñ¡«¼  »«∩ó½Ñ¡¿¿ ß¿ú¡á½á « »αÑαδóá¡¿¿, α«ñ¿Γѽ∞߬¿⌐ ªÑ
  989. »α«µÑßß »α«ñ«½ªáÑΓ
  990.  
  991.  
  992.  
  993.                                     194
  994.  
  995.     ┌────────────────────────────────────────────────────────────┐
  996.     │ #include <signal.h>                                        │
  997.     │ sigcatcher()                                               │
  998.     │ {                                                          │
  999.     │    printf("PID %d »α¿¡∩½ ß¿ú¡á½\n",getpid()); /* »ÑτáΓ∞    │
  1000.     │                                                  PID */    │
  1001.     │    signal(SIGINT,sigcatcher);                              │
  1002.     │ }                                                          │
  1003.     │                                                            │
  1004.     │ main()                                                     │
  1005.     │ {                                                          │
  1006.     │    int ppid;                                               │
  1007.     │                                                            │
  1008.     │    signal(SIGINT,sigcatcher);                              │
  1009.     │                                                            │
  1010.     │    if (fork() == 0)                                        │
  1011.     │    {                                                       │
  1012.     │       /* ñáΓ∞ »α«µÑßßá¼ óαѼ∩ ñ½∩ óδ»«½¡Ñ¡¿∩ πßΓᡫ󫬠*/  │
  1013.     │       sleep(5);      /* í¿í½¿«ΓÑτ¡á∩ Σπ¡¬µ¿∩ »α¿«ßΓá¡«óá ¡á│
  1014.     │                         5 ßѬπ¡ñ */                        │
  1015.     │       ppid = getppid();  /* »«½πτ¿Γ∞ ¿ñÑ¡Γ¿Σ¿¬áΓ«α α«ñ¿ΓÑ- │
  1016.     │                             ½∩ */                          │
  1017.     │       for (;;)                                             │
  1018.     │            if (kill(ppid,SIGINT) == -1)                    │
  1019.     │                exit();                                     │
  1020.     │    }                                                       │
  1021.     │                                                            │
  1022.     │    /* τѼ ¡¿ªÑ »α¿«α¿ΓÑΓ, ΓѼ óδΦÑ Φá¡ßδ ó«º¡¿¬¡«óÑ¡¿∩ ¬«¡-│
  1023.     │       ¬παÑ¡µ¿¿ */                                          │
  1024.     │    nice(10);                                               │
  1025.     │    for (;;)                                                │
  1026.     │            ;                                               │
  1027.     │ }                                                          │
  1028.     └────────────────────────────────────────────────────────────┘
  1029.  
  1030.     É¿ßπ¡«¬ 7.12.  Åα«úαá¼¼á,  ñѼ«¡ßΓα¿απεΘá∩  ó«º¡¿¬¡«óÑ¡¿Ñ  ß«»Ñα¡¿τÑßΓóá
  1031.                   ¼Ñªñπ »α«µÑßßἿ ó σ«ñÑ «íαáí«Γ¬¿ ß¿ú¡á½«ó
  1032.  
  1033. ¿ß»«½¡∩Γ∞ µ¿¬½¿τÑ߬¿⌐ ¡áí«α ¬«¼á¡ñ.
  1034.     Äñ¡á¬«, ó«º¼«ª¡á ¿ ß½ÑñπεΘá∩ «τÑαÑñ¡«ßΓ∞ ¡áßΓπ»½Ñ¡¿∩ ß«íδΓ¿⌐:
  1035.  1. Å«α«ªñÑ¡¡δ⌐ »α«µÑßß »«ßδ½áÑΓ α«ñ¿Γѽ∞߬«¼π »α«µÑßßπ ß¿ú¡á½ « »αÑαδóá¡¿¿.
  1036.  2.  É«ñ¿Γѽ∞߬¿⌐ »α«µÑßß »α¿¡¿¼áÑΓ ß¿ú¡á½ ¿ óδºδóáÑΓ Σπ¡¬µ¿ε «íαáí«Γ¬¿ ß¿ú-
  1037.     ¡á½á, ¡« αѺÑαó¿απÑΓß∩ ∩ñα«¼, ¬«Γ«α«Ñ »α«¿ºó«ñ¿Γ »ÑαѬ½ετÑ¡¿Ñ  ¬«¡ΓѬßΓá
  1038.     ñ« Γ«ú«, ¬á¬ Σπ¡¬µ¿∩ signal íπñÑΓ óδºóá¡á »«óΓ«α¡«.
  1039.  3.  æ¡«óá  ºá»π߬áÑΓß∩  »«α«ªñÑ¡¡δ⌐ »α«µÑßß, ¬«Γ«αδ⌐ »«ßδ½áÑΓ α«ñ¿Γѽ∞߬«¼π
  1040.     »α«µÑßßπ ÑΘÑ «ñ¿¡ ß¿ú¡á½ « »αÑαδóá¡¿¿.
  1041.  4. É«ñ¿Γѽ∞߬¿⌐ »α«µÑßß »«½πτáÑΓ óΓ«α«⌐ ß¿ú¡á½ « »αÑαδóá¡¿¿, ¡«  »ÑαÑñ  ΓѼ
  1042.     «¡  ¡Ñ π߻ѽ ßñѽáΓ∞ ¡¿¬á¬¿σ αáß»«α∩ªÑ¡¿⌐ «Γ¡«ß¿Γѽ∞¡« ß»«ß«íá «íαáí«Γ¬¿
  1043.     ß¿ú¡á½á. è«úñá óδ»«½¡Ñ¡¿Ñ α«ñ¿Γѽ∞߬«ú« »α«µÑßßá íπñÑΓ ó«º«í¡«ó½Ñ¡«,  «¡
  1044.     ºáóÑαΦ¿Γß∩.
  1045.     é  »α«úαἼѠ«»¿ßδóáÑΓß∩ ¿¼Ñ¡¡« ΓᬫѠ»«óÑñÑ¡¿Ñ »α«µÑßß«ó, »«ß¬«½∞¬π óδ-
  1046. º«ó α«ñ¿Γѽ∞߬¿¼ »α«µÑßß«¼ Σπ¡¬µ¿¿ nice »α¿ó«ñ¿Γ ¬ Γ«¼π, τΓ« ∩ñα« íπñÑΓ τáΘÑ
  1047. ºá»π߬áΓ∞ ¡á óδ»«½¡Ñ¡¿Ñ »«α«ªñÑ¡¡δ⌐ »α«µÑßß.
  1048.     Å« ß½«óá¼ É¿τ¿ (φΓ¿ ßóÑñÑ¡¿∩ í뫨 »«½πτÑ¡δ ó  τáßΓ¡«⌐  íÑßÑñÑ),  ß¿ú¡á½δ
  1049. í뫨 ºáñπ¼á¡δ ¬á¬ ß«íδΓ¿∩, ¬«Γ«αδÑ ¼«úπΓ íδΓ∞ ¬á¬ ΣáΓá½∞¡δ¼¿, Γᬠ¿ »α«σ«ñ∩-
  1050. Θ¿¼¿  ¡Ñºá¼ÑΓ¡«,  ¬«Γ«αδÑ ¡Ñ óßÑúñá «íαáíáΓδóáεΓß∩, »«φΓ«¼π ó αá¡¡¿σ óÑαß¿∩σ
  1051. ß¿ßΓÑ¼δ ¬«¡¬παÑ¡µ¿∩ »α«µÑßß«ó, ßó∩ºá¡¡á∩ ß »«ß佬«⌐ ß¿ú¡á½«ó, ¡Ñ  Σ¿¬ß¿α«óá-
  1052. ½áß∞.  ÆÑ¼  ¡Ñ  ¼Ñ¡ÑÑ, «¡á »αÑñßΓáó½∩ÑΓ ßÑα∞Ѻ¡πε »α«í½Ñ¼π ó ΓÑσ »α«úαá¼¼áσ,
  1053. úñÑ «ßπΘÑßΓó½∩ÑΓß∩ »α¿Ñ¼ ß¿ú¡á½«ó. ¥Γá »α«í½Ñ¼á íδ½á íδ πßΓαá¡Ñ¡á,  Ñß½¿  íδ
  1054.  
  1055.                                     195
  1056.  
  1057. »«½Ñ  «»¿ßá¡¿∩  ß¿ú¡á½á ¡Ñ «τ¿ΘὫß∞ »« Ñú« »«½πτÑ¡¿¿. Äñ¡á¬«, ΓᬫѠαÑΦÑ¡¿Ñ
  1058. »«α«ñ¿½« íδ ¡«óπε »α«í½Ñ¼π: Ñß½¿ »«ßΓπ»áεΘ¿⌐ ß¿ú¡á½ »α¿¡¿¼áÑΓß∩, á »«½Ñ «τ¿-
  1059. ΘÑ¡«, ó½«ªÑ¡¡δÑ «íαáΘÑ¡¿∩ ¬  Σπ¡¬µ¿¿  «íαáí«Γ¬¿  ß¿ú¡á½á  ¼«úπΓ  »ÑαÑ»«½¡¿Γ∞
  1060. ßΓѬ.  æ  ñαπú«⌐  ßΓ«α«¡δ, ∩ñα« ¼«ú½« íδ ßíα«ß¿Γ∞ º¡áτÑ¡¿Ñ Σπ¡¬µ¿¿ «íαáí«Γ¬¿
  1061. ß¿ú¡á½á, ΓѼ ßá¼δ¼ ñѽá∩ αáß»«α∩ªÑ¡¿Ñ ¿ú¡«α¿α«óáΓ∞ ß¿ú¡á½δ ñá¡¡«ú«  Γ¿»á  ñ«
  1062. ΓÑσ  »«α,  »«¬á  »«½∞º«óáΓѽ∞ ó¡«ó∞ ¡Ñ π¬áªÑΓ, τΓ« ¡πª¡« ñѽáΓ∞ »« »«½πτÑ¡¿¿
  1063. »«ñ«í¡δσ ß¿ú¡á½«ó. Æá¬«Ñ αÑΦÑ¡¿Ñ »αÑñ»«½áúáÑΓ  »«ΓÑαε  ¿¡Σ«α¼áµ¿¿,  Γᬠ ¬á¬
  1064. »α«µÑßß  ¡Ñ  ó  ß«ßΓ«∩¡¿¿ πº¡áΓ∞, ß¬«½∞¬« ß¿ú¡á½«ó ¿¼ í佫 »«½πτÑ¡«. Äñ¡á¬«,
  1065. ¿¡Σ«α¼áµ¿¿ »α¿ φΓ«¼ ΓÑα∩ÑΓß∩ ¡Ñ í«½∞ΦÑ, τѼ ó Γ«¼ ß½πτáÑ, ¬«úñá »α«µÑßß  »«-
  1066. ½πτáÑΓ í«½∞Φ«Ñ ¬«½¿τÑßΓó« ß¿ú¡á½«ó «ñ¡«ú« Γ¿»á ñ« Γ«ú«, ¬á¬ »«½πτáÑΓ ó«º¼«ª-
  1067. ¡«ßΓ∞  ¿σ «íαáí«ΓáΓ∞. é ß¿ßΓѼѠBSD, ¡á¬«¡Ñµ, »α«µÑßß ¿¼ÑÑΓ ó«º¼«ª¡«ßΓ∞ í½«-
  1068. ¬¿α«óáΓ∞ »«½πτÑ¡¿Ñ ß¿ú¡á½«ó ¿ ß¡¿¼áΓ∞ í½«¬¿α«ó¬π »α¿ ¡«ó«¼ «íαáΘÑ¡¿¿ ¬  ß¿ß-
  1069. ΓѼ¡«⌐  Σπ¡¬µ¿¿;  ¬«úñá  »α«µÑßß  ß¡¿¼áÑΓ í½«¬¿α«ó¬π ß¿ú¡á½«ó, ∩ñα« »«ßδ½áÑΓ
  1070. »α«µÑßßπ óßÑ ß¿ú¡á½δ, «Γ½«ªÑ¡¡δÑ (»«ó¿ßΦ¿Ñ) ß ¼«¼Ñ¡Γá πßΓᡫ󬿠 í½«¬¿α«ó¬¿.
  1071. è«úñá »α«µÑßß »«½πτáÑΓ ß¿ú¡á½, ∩ñα« áóΓ«¼áΓ¿τÑ߬¿ í½«¬¿απÑΓ »«½πτÑ¡¿Ñ ß½Ññπ-
  1072. εΘÑú« ß¿ú¡á½á ñ« ΓÑσ »«α, »«¬á Σπ¡¬µ¿∩ «íαáí«Γ¬¿ ß¿ú¡á½á ¡Ñ ºá¬«¡τ¿Γ αáí«Γπ.
  1073. é  φΓ¿σ ñÑ⌐ßΓó¿∩σ ∩ñαá ¡áí½εñáÑΓß∩ á¡á½«ú¿∩ ß ΓѼ, ¬á¬ ∩ñα« αÑáú¿απÑΓ ¡á á»-
  1074. »áαáΓ¡δÑ »αÑαδóá¡¿∩: «¡« í½«¬¿απÑΓ »«∩ó½Ñ¡¿Ñ ¡«óδσ »αÑαδóá¡¿⌐ ¡á óαѼ∩ «íαá-
  1075. í«Γ¬¿ »αÑñδñπΘ¿σ.
  1076.     éΓ«α«Ñ ¡Ñß««ΓóÑΓßΓó¿Ñ ó «íαáí«Γ¬Ñ ß¿ú¡á½«ó ßó∩ºá¡« ß  »α¿Ñ¼«¼  ß¿ú¡á½«ó,
  1077. »«ßΓπ»áεΘ¿σ ó« óαѼ∩ ¿ß»«½¡Ñ¡¿∩ ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿, ¬«úñá »α«µÑßß »α¿«ßΓá¡«ó-
  1078. ½Ñ¡  ß ñ«»π߬áεΘ¿¼ »αÑαδóá¡¿∩ »α¿«α¿ΓÑΓ«¼. æ¿ú¡á½ »«íπªñáÑΓ »α«µÑßß óδ⌐Γ¿ ¿º
  1079. »α¿«ßΓá¡«óá (ß »«¼«Θ∞ε longjump), óÑα¡πΓ∞ß∩ ó αѪ¿¼ ºáñáτ¿ ¿ óδºóáΓ∞ Σπ¡¬µ¿ε
  1080. «íαáí«Γ¬¿ ß¿ú¡á½á. è«úñá Σπ¡¬µ¿∩ «íαáí«Γ¬¿ ß¿ú¡á½á ºáóÑαΦáÑΓ αáí«Γπ,  »α«¿ß-
  1081. σ«ñ¿Γ  Γ«,  τΓ« »α«µÑßß óδσ«ñ¿Γ ¿º ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿ ß «Φ¿í¬«⌐, ß««íΘáεΘÑ⌐ «
  1082. »αÑαδóá¡¿¿ ÑÑ óδ»«½¡Ñ¡¿∩. ôº¡áó «í «Φ¿í¬Ñ, »«½∞º«óáΓѽ∞ ºá»π߬áÑΓ  ß¿ßΓѼ¡πε
  1083. Σπ¡¬µ¿ε  »«óΓ«α¡«, «ñ¡á¬« í«½ÑÑ πñ«í¡« í佫 íδ, Ñß½¿ íδ φΓ« ñÑ⌐ßΓó¿Ñ áóΓ«¼á-
  1084. Γ¿τÑ߬¿ óδ»«½¡∩½«ß∞ ∩ñα«¼, ¬á¬ ó ß¿ßΓѼѠBSD.
  1085.     ÆαÑΓ∞Ñ ¡Ñß««ΓóÑΓßΓó¿Ñ »α«∩ó½∩ÑΓß∩ ó Γ«¼ ß½πτáÑ, ¬«úñá »α«µÑßß ¿ú¡«α¿απÑΓ
  1086. »«ßΓπ»¿óΦ¿⌐ ß¿ú¡á½. àß½¿ ß¿ú¡á½ »«ßΓπ»áÑΓ ó Γ« óαѼ∩, ¬«úñá »α«µÑßß ¡áσ«ñ¿Γ-
  1087. ß∩ ó ß«ßΓ«∩¡¿¿ »α¿«ßΓá¡«óá ß ñ«»π߬áεΘ¿¼ »αÑαδóá¡¿∩ »α¿«α¿ΓÑΓ«¼, »α«µÑßß ó«-
  1088. º«í¡«ó½∩ÑΓß∩, ¡« ¡Ñ óδ»«½¡∩ÑΓ longjump. äαπú¿¼¿ ß½«óἿ, ∩ñα« πº¡áÑΓ «  Γ«¼,
  1089. τΓ« »α«µÑßß »α«¿ú¡«α¿α«óá½ »«ßΓπ»¿óΦ¿⌐ ß¿ú¡á½ Γ«½∞¬« »«ß½Ñ ó«º«í¡«ó½Ñ¡¿∩ Ñú«
  1090. óδ»«½¡Ñ¡¿∩. ï«ú¿τ¡ÑÑ í佫 íδ «ßΓáó¿Γ∞ »α«µÑßß ó ß«ßΓ«∩¡¿¿ »α¿«ßΓá¡«óá. Äñ¡á-
  1091. ¬«,  ó ¼«¼Ñ¡Γ »«ß佬¿ ß¿ú¡á½á ¬ »α«ßΓαá¡ßΓóπ »α«µÑßßá, ó ¬«Γ«α«¼ ∩ñα« σαá¡¿Γ
  1092. áñαÑß Σπ¡¬µ¿¿ «íαáí«Γ¬¿ ß¿ú¡á½á, ¼«ªÑΓ «ΓßπΓßΓó«óáΓ∞  ñ«ßΓπ».  ¥Γá  »α«í½Ñ¼á
  1093. ¼«ªÑΓ íδΓ∞ αÑΦѡᠻπΓѼ ºá»«¼¿¡á¡¿∩ áñαÑßá Σπ¡¬µ¿¿ «íαáí«Γ¬¿ ß¿ú¡á½á ó ºá»¿-
  1094. ß¿  Γáí½¿µδ »α«µÑßß«ó, «íαáΘá∩ß∞ ¬ ¬«Γ«α«⌐, ∩ñα« »«½πτὫ íδ ó«º¼«ª¡«ßΓ∞ αÑ-
  1095. ΦáΓ∞ ó«»α«ß « ¡Ñ«íσ«ñ¿¼«ßΓ¿ ó«º«í¡«ó½Ñ¡¿∩ »α«µÑßßá »« »«½πτÑ¡¿¿  ß¿ú¡á½á.  æ
  1096. ñαπú«⌐  ßΓ«α«¡δ,  »α«µÑßß ¼«ªÑΓ ¡Ñ¼Ññ½Ñ¡¡« óÑα¡πΓ∞ß∩ ó ß«ßΓ«∩¡¿Ñ »α¿«ßΓá¡«óá
  1097. (»« á½ú«α¿Γ¼π sleep), Ñß½¿ «í¡áαπª¿Γ, τΓ« ó Ñú« ó«º«í¡«ó½Ñ¡¿¿ ¡Ñ í佫  ¡Ñ«í-
  1098. σ«ñ¿¼«ßΓ¿. Äñ¡á¬«, »«½∞º«óáΓѽ∞߬¿Ñ »α«µÑßßδ ¡Ñ ¿¼ÑεΓ ó«º¼«ª¡«ßΓ¿ «ß«º¡áóáΓ∞
  1099. ß«íßΓóÑ¡¡«Ñ ó«º«í¡«ó½Ñ¡¿Ñ, »«ß¬«½∞¬π ∩ñα« αáß»«½áúáÑΓ Γ«τ¬π óσ«ñá ó á½ú«α¿Γ¼
  1100. sleep  ó¡πΓα¿  µ¿¬½á  ß πß½«ó¿Ñ¼ »α«ñ«½ªÑ¡¿∩ (ß¼. ú½áóπ 2), »ÑαÑó«ñ∩ »α«µÑßß
  1101. ó¡«ó∞ ó ß«ßΓ«∩¡¿Ñ »α¿«ßΓá¡«óá, Ñß½¿ «ª¿ñáѼ«Ñ »α«µÑßß«¼ ß«íδΓ¿Ñ  ó  ñÑ⌐ßΓó¿-
  1102. Γѽ∞¡«ßΓ¿ ¡Ñ ¿¼Ñ½« ¼ÑßΓá.
  1103.     è« óßѼπ ß¬áºá¡¡«¼π óδΦÑ ß½ÑñπÑΓ ñ«íáó¿Γ∞, τΓ« ∩ñα« «íαáíáΓδóáÑΓ ß¿ú¡á½δ
  1104. Γ¿»á "ú¿íѽ∞ »«Γ«¼¬á" ¡Ñ Γá¬, ¬á¬ ñαπú¿Ñ ß¿ú¡á½δ. é τáßΓ¡«ßΓ¿, ¬«úñá »α«µÑßß
  1105. πº¡áÑΓ  « »«½πτÑ¡¿¿ ß¿ú¡á½á "ú¿íѽ∞ »«Γ«¼¬á", «¡ ó䬽ετáÑΓ ¿¡ñ¿¬áµ¿ε ß¿ú¡á½á
  1106. ó ß««ΓóÑΓßΓóπεΘѼ »«½Ñ ºá»¿ß¿ Γáí½¿µδ »α«µÑß߫󠠿  »«  π¼«½τá¡¿ε  ñÑ⌐ßΓóπÑΓ
  1107. Γá¬,  ß½«ó¡« ¡¿¬á¬«ú« ß¿ú¡á½á ¿ ¡Ñ »«ßΓπ»á½«. ìạáτÑ¡¿Ñ ß¿ú¡á½á "ú¿íѽ∞ »«-
  1108. Γ«¼¬á" ß«ßΓ«¿Γ ó ó«º«í¡«ó½Ñ¡¿¿ óδ»«½¡Ñ¡¿∩ »α«µÑßßá, »α¿«ßΓá¡«ó½Ñ¡¡«ú« ß  ñ«-
  1109. »π߬áεΘ¿¼  »αÑαδóá¡¿∩  »α¿«α¿ΓÑΓ«¼. àß½¿ »α«µÑßß »α¿¡¿¼áÑΓ Γᬫ⌐ ß¿ú¡á½, «¡,
  1110. ¬á¬ ¿ ó« óßÑσ «ßΓá½∞¡δσ ß½πτá∩σ, ºá»π߬áÑΓ Σπ¡¬µ¿ε «íαáí«Γ¬¿ ß¿ú¡á½á. äÑ⌐ßΓ-
  1111. ó¿∩, »αÑñ»α¿¡¿¼áѼδÑ ∩ñα«¼ ó Γ«¼ ß½πτáÑ, ¬«úñá »α«µÑßß ¿ú¡«α¿απÑΓ  »«ßΓπ»¿ó-
  1112. Φ¿⌐  ß¿ú¡á½  φΓ«ú« Γ¿»á, íπñπΓ «»¿ßá¡δ ó αáºñѽѠ7.4. ìᬫ¡Ñµ, ¬«úñá »α«µÑßß
  1113. óδºóá½ Σπ¡¬µ¿ε signal ß »áαá¼ÑΓα«¼ "ú¿íѽ∞ »«Γ«¼¬á" (death of  child),  ∩ñα«
  1114. »«ßδ½áÑΓ  Ñ¼π  ß««ΓóÑΓßΓóπεΘ¿⌐  ß¿ú¡á½, Ñß½¿ «¡ ¿¼ÑÑΓ »«Γ«¼¬«ó, »αѬαáΓ¿óΦ¿σ
  1115. ßπΘÑßΓó«óá¡¿Ñ. é αáºñѽѠ7.4 ¡á φΓ«¼ ¼«¼Ñ¡ΓÑ ¼δ «ßΓá¡«ó¿¼ß∩ í«½ÑÑ »«ñα«í¡«.
  1116.  
  1117.                                     196
  1118.  
  1119.  
  1120.     E7.2.2 âαπ»»δ »α«µÑßß«óF
  1121.  
  1122.     ìÑß¼«Γα∩ ¡á Γ«, τΓ« ó ß¿ßΓѼѠUNIX »α«µÑßßδ ¿ñÑ¡Γ¿Σ¿µ¿απεΓß∩  π¡¿¬á½∞¡δ¼
  1123. ¬«ñ«¼  (PID),  ß¿ßΓѼѠ¿¡«úñá »α¿σ«ñ¿Γß∩ ¿ß»«½∞º«óáΓ∞ ñ½∩ ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ »α«-
  1124. µÑß߫󠡫¼Ñα "úαπ»»δ", ó ¬«Γ«απε «¡¿ óσ«ñ∩Γ. ìá»α¿¼Ñα, »α«µÑßßδ, ¿¼ÑεΘ¿Ñ «í-
  1125. ΘÑú« »αÑñ¬á ó ½¿µÑ αÑú¿ßΓαᵿ«¡¡«ú« shell'á, óºá¿¼«ßó∩ºá¡δ, ¿ »«φΓ«¼π  ¬«úñá
  1126. »«½∞º«óáΓѽ∞  ¡áª¿¼áÑΓ  ¬½áó¿Φ¿ "delete" ¿½¿ "break", ¿½¿ ¬«úñá ΓÑନ¡á½∞¡á∩
  1127. ½¿¡¿∩ "ºáó¿ßáÑΓ", óßÑ φΓ¿ »α«µÑßßδ »«½πτáεΓ  ß««ΓóÑΓßΓóπεΘ¿Ñ  ß¿ú¡á½δ.  ƒñα«
  1128. ¿ß»«½∞ºπÑΓ  ¬«ñ  úαπ»»δ  »α«µÑßß«ó  ñ½∩ ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ úαπ»»δ óºá¿¼«ßó∩ºá¡¡δσ
  1129. »α«µÑßß«ó, ¬«Γ«αδÑ »α¿ ¡áßΓπ»½Ñ¡¿¿ «»αÑñѽѡ¡δσ ß«íδΓ¿⌐ ñ«½ª¡δ »«½πτáΓ∞  «í-
  1130. Θ¿⌐  ß¿ú¡á½.  è«ñ úαπ»»δ ºá»«¼¿¡áÑΓß∩ ó Γáí½¿µÑ »α«µÑßß«ó; »α«µÑßßδ ¿º «ñ¡«⌐
  1131. úαπ»»δ ¿¼ÑεΓ «ñ¿¡ ¿ Γ«Γ ªÑ ¬«ñ úαπ»»δ.
  1132.     ä½∩ Γ«ú«, τΓ«íδ »α¿ßó«¿Γ∞ ¬«ñπ úαπ»»δ »α«µÑßß«ó ¡áτá½∞¡«Ñ º¡áτÑ¡¿Ñ, »α¿-
  1133. αáó¡∩ó Ñú« ¬«ñπ ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ »α«µÑßßá,  ß½ÑñπÑΓ  ó«ß»«½∞º«óáΓ∞ß∩  ß¿ßΓѼ¡«⌐
  1134. Σπ¡¬µ¿Ñ⌐ setpgrp. æ¿¡Γá¬ß¿ß ó맮óá Σπ¡¬µ¿¿:
  1135.     grp = setpgrp();
  1136. úñÑ  grp  -  ¡«óδ⌐  ¬«ñ  úαπ»»δ  »α«µÑßß«ó. Åα¿ óδ»«½¡Ñ¡¿¿ Σπ¡¬µ¿¿ fork »α«-
  1137. µÑßß-»«Γ«¼«¬ ¡áß½ÑñπÑΓ ¬«ñ úαπ»»δ  ßó«Ñú«  α«ñ¿Γѽ∩.  êß»«½∞º«óá¡¿Ñ  Σπ¡¬µ¿¿
  1138. setpgrp  »α¿  ¡áº¡áτÑ¡¿¿  ñ½∩  »α«µÑßßá «»ÑαáΓ«α߬«ú« ΓÑନ¡á½á ¿¼ÑÑΓ ó᪡δÑ
  1139. «ß«íÑ¡¡«ßΓ¿, ¡á ¬«Γ«αδÑ ßΓ«¿Γ «íαáΓ¿Γ∞ ó¡¿¼á¡¿Ñ (ß¼. αáºñѽ 10.3.5).
  1140.  
  1141.  
  1142.     E7.2.3 Å«ß佬á ß¿ú¡á½«ó »α«µÑßßἿF
  1143.  
  1144.     ä½∩ »«ß佬¿ ß¿ú¡á½«ó »α«µÑßßδ ¿ß»«½∞ºπεΓ ß¿ßΓѼ¡πε Σπ¡¬µ¿ε kill. æ¿¡Γá¬-
  1145. ߿ߠó맮óá Σπ¡¬µ¿¿:
  1146.     kill(pid,signum)
  1147. úñÑ ó pid π¬áºδóáÑΓß∩ áñαÑßáΓ »«ßδ½áѼ«ú« ß¿ú¡á½á («í½áßΓ∞  ñÑ⌐ßΓó¿∩  ß¿ú¡á-
  1148. ½á), á ó signum - ¡«¼Ñα »«ßδ½áѼ«ú« ß¿ú¡á½á. æó∩º∞ ¼Ñªñπ º¡áτÑ¡¿Ñ¼ pid ¿ ß«-
  1149. ó«¬π»¡«ßΓ∞ε óδ»«½¡∩εΘ¿σß∩ »α«µÑßß«ó ß½ÑñπεΘá∩:
  1150.   *  àß½¿  pid  - »«½«ª¿Γѽ∞¡«Ñ µÑ½«Ñ τ¿ß½«, ∩ñα« »«ßδ½áÑΓ ß¿ú¡á½ »α«µÑßßπ ß
  1151.     ¿ñÑ¡Γ¿Σ¿¬áΓ«α«¼ pid.
  1152.   * àß½¿ º¡áτÑ¡¿Ñ pid αáó¡« 0, ß¿ú¡á½ »«ßδ½áÑΓß∩ óßѼ »α«µÑßßá¼, óσ«ñ∩Θ¿¼  ó
  1153.     «ñ¡π úαπ»»π ß »α«µÑßß«¼, óδºóáóΦ¿¼ Σπ¡¬µ¿ε kill.
  1154.   *  àß½¿ º¡áτÑ¡¿Ñ pid αáó¡« -1, ß¿ú¡á½ »«ßδ½áÑΓß∩ óßѼ »α«µÑßßá¼, π ¬«Γ«αδσ
  1155.     αÑá½∞¡δ⌐ ¬«ñ ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ »«½∞º«óáΓѽ∩ ß«ó»áñáÑΓ ß ΓѼ, »«ñ ¬«Γ«αδ¼ ¿ß-
  1156.     »«½¡∩ÑΓß∩ »α«µÑßß, óδºóáóΦ¿⌐ Σπ¡¬µ¿ε kill («í φΓ¿σ ¬«ñáσ í«½ÑÑ  »«ñα«í¡«
  1157.     ß¼.  ó αáºñѽѠ7.6). àß½¿ »α«µÑßß, »«ß½áóΦ¿⌐ ß¿ú¡á½, ¿ß»«½¡∩ÑΓß∩ »«ñ ¬«-
  1158.     ñ«¼ ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ ßπ»Ñα»«½∞º«óáΓѽ∩, ß¿ú¡á½ αáßßδ½áÑΓß∩ óßѼ  »α«µÑßßá¼,
  1159.     ¬α«¼Ñ »α«µÑßß«ó ß ¿ñÑ¡Γ¿Σ¿¬áΓ«αἿ 0 ¿ 1.
  1160.   *  àß½¿  pid - «Γα¿µáΓѽ∞¡«Ñ µÑ½«Ñ τ¿ß½«, ¡« ¡Ñ -1, ß¿ú¡á½ »«ßδ½áÑΓß∩ óßѼ
  1161.     »α«µÑßßá¼, óσ«ñ∩Θ¿¼ ó úαπ»»π ß ¡«¼Ñα«¼, αáó¡δ¼ áíß«½εΓ¡«¼π º¡áτÑ¡¿ε pid.
  1162.  
  1163.     é« óßÑσ ß½πτá∩σ, Ñß½¿ »α«µÑßß, »«ß½áóΦ¿⌐ ß¿ú¡á½, ¿ß»«½¡∩ÑΓß∩  »«ñ  ¬«ñ«¼
  1164. ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ »«½∞º«óáΓѽ∩, ¡Ñ ∩ó½∩εΘÑú«ß∩ ßπ»Ñα»«½∞º«óáΓѽѼ, ¿½¿ Ñß½¿ ¬«ñδ
  1165. ¿ñÑ¡Γ¿Σ¿¬áµ¿¿  »«½∞º«óáΓѽ∩  (αÑá½∞¡δ⌐ ¿ ¿ß»«½¡¿Γѽ∞¡δ⌐) π φΓ«ú« »α«µÑßßá ¡Ñ
  1166. ß«ó»áñáεΓ ß ß««ΓóÑΓßΓóπεΘ¿¼¿ ¬«ñἿ »α«µÑßßá, »α¿¡¿¼áεΘÑú« ß¿ú¡á½, kill  ºá-
  1167. óÑαΦáÑΓß∩ ¡Ñπñáτ¡«.
  1168.     é »α«úαá¼¼Ñ, »α¿óÑñÑ¡¡«⌐ ¡á É¿ßπ¡¬Ñ 7.13, ú½áó¡δ⌐ »α«µÑßß ßíαáßδóáÑΓ πß-
  1169. Γá¡«ó½Ñ¡¡«Ñ αá¡ÑÑ º¡áτÑ¡¿Ñ ¡«¼Ñαá úαπ»»δ ¿ »«α«ªñáÑΓ 10 ¡«óδσ »α«µÑßß«ó. Åα¿
  1170. ᫪ñÑ¡¿¿  ¬áªñδ⌐ »α«µÑßß-»«Γ«¼«¬ ¡áß½ÑñπÑΓ ¡«¼Ñα úαπ»»δ »α«µÑßß«ó ßó«Ñú« α«-
  1171. ñ¿Γѽ∩, «ñ¡á¬«, »α«µÑßßδ, ß«ºñá¡¡δÑ ó ¡ÑτÑΓ¡δσ ¿ΓÑαᵿ∩σ  µ¿¬½á,  ßíαáßδóáεΓ
  1172. φΓ«  º¡áτÑ¡¿Ñ.  æ¿ßΓѼ¡δÑ  Σπ¡¬µ¿¿ getpid ¿ getpgrp ó«ºóαáΘáεΓ º¡áτÑ¡¿∩ ¬«ñá
  1173. ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ óδ»«½¡∩Ѽ«ú« »α«µÑßßá ¿ ¡«¼Ñαá úαπ»»δ, ó ¬«Γ«απε «¡ óσ«ñ¿Γ,  á
  1174. Σπ¡¬µ¿∩ pause »α¿«ßΓá¡áó½¿óáÑΓ óδ»«½¡Ñ¡¿Ñ »α«µÑßßá ñ« ¼«¼Ñ¡Γá »«½πτÑ¡¿∩ ß¿ú-
  1175. ¡á½á. é ¬«¡Ñτ¡«¼ ¿Γ«úÑ α«ñ¿Γѽ∞߬¿⌐ »α«µÑßß ºá»π߬áÑΓ Σπ¡¬µ¿ε kill ¿ »«ßδ½á-
  1176. ÑΓ  ß¿ú¡á½  «  »αÑαδóá¡¿¿ óßѼ »α«µÑßßá¼, óσ«ñ∩Θ¿¼ ó «ñ¡π ß ¡¿¼ úαπ»»π. ƒñα«
  1177.  
  1178.  
  1179.                                     197
  1180.  
  1181.     ┌────────────────────────────────────────────────────────────┐
  1182.     │ #include <signal.h>                                        │
  1183.     │ main()                                                     │
  1184.     │ {                                                          │
  1185.     │    register int i;                                         │
  1186.     │                                                            │
  1187.     │    setpgrp();                                              │
  1188.     │    for (i = 0; i < 10; i++)                                │
  1189.     │    {                                                       │
  1190.     │      if (fork() == 0)                                      │
  1191.     │      {                                                     │
  1192.     │          /* »«α«ªñÑ¡¡δ⌐ »α«µÑßß */                         │
  1193.     │          if (i & 1)                                        │
  1194.     │              setpgrp();                                    │
  1195.     │          printf("pid = %d pgrp = %d\n",getpid(),getpgrp());│
  1196.     │          pause();    /* ß¿ßΓѼ¡á∩ Σπ¡¬µ¿∩ »α¿«ßΓá¡«óá óδ-  │
  1197.     │                         »«½¡Ñ¡¿∩ */                        │
  1198.     │      }                                                     │
  1199.     │    }                                                       │
  1200.     │    kill(0,SIGINT);                                         │
  1201.     │ }                                                          │
  1202.     └────────────────────────────────────────────────────────────┘
  1203.  
  1204.          É¿ßπ¡«¬ 7.13. Åα¿¼Ñα ¿ß»«½∞º«óá¡¿∩ Σπ¡¬µ¿¿ setpgrp
  1205.  
  1206.  
  1207. »«ßδ½áÑΓ ß¿ú¡á½ »∩Γ¿ "τÑΓ¡δ¼" »α«µÑßßá¼, ¡Ñ ßíα«ß¿óΦ¿¼ π¡áß½Ññ«óá¡¡«Ñ º¡áτÑ-
  1208. ¡¿Ñ ¡«¼Ñαá úαπ»»δ, »α¿ φΓ«¼ »∩Γ∞ "¡ÑτÑΓ¡δσ" »α«µÑßß«ó »α«ñ«½ªáεΓ ßó«Ñ óδ»«½-
  1209. ¡Ñ¡¿Ñ.
  1210.  
  1211.  
  1212.     E7.3 çÇéàÉÿàìêà é¢ÅÄïìàìꃠÅÉÄûàææÇF
  1213.  
  1214.     é ß¿ßΓѼѠUNIX »α«µÑßß ºáóÑαΦáÑΓ  ßó«Ñ  óδ»«½¡Ñ¡¿Ñ,  ºá»π߬á∩  ß¿ßΓѼ¡πε
  1215. Σπ¡¬µ¿ε exit. Å«ß½Ñ φΓ«ú« »α«µÑßß »ÑαÑσ«ñ¿Γ ó ß«ßΓ«∩¡¿Ñ "»αѬαáΘÑ¡¿∩ ßπΘÑßΓ-
  1216. ó«óá¡¿∩" (ß¼. É¿ßπ¡«¬ 6.1), «ßó«í«ªñáÑΓ αÑßπαßδ ¿ ½¿¬ó¿ñ¿απÑΓ ßó«⌐ ¬«¡ΓѬßΓ.
  1217. æ¿¡Γá¬ß¿ß ó맮óá Σπ¡¬µ¿¿:
  1218.  
  1219.     exit(status);
  1220.  
  1221. úñÑ status - º¡áτÑ¡¿Ñ, ó«ºóαáΘáѼ«Ñ Σπ¡¬µ¿Ñ⌐ α«ñ¿Γѽ∞߬«¼π »α«µÑßßπ. Åα«µÑß-
  1222. ßδ ¼«úπΓ óδºδóáΓ∞ Σπ¡¬µ¿ε exit ¬á¬ ó ∩ó¡«¼, Γᬠ¿ ó ¡Ñ∩ó¡«¼ ó¿ñÑ (»« «¬«¡τá-
  1223. ¡¿¿ óδ»«½¡Ñ¡¿∩ »α«úαá¼¼δ: ¡áτá½∞¡á∩ »α«µÑñπαá (startup), ¬«¼»«¡πѼá∩ ß« óßÑ-
  1224. ¼¿  »α«úαἼἿ  ¡á  ∩ºδ¬Ñ  æ¿, óδºδóáÑΓ Σπ¡¬µ¿ε exit ¡á óδσ«ñÑ »α«úαá¼¼δ ¿º
  1225. Σπ¡¬µ¿¿ main, ∩ó½∩εΘÑ⌐ß∩ «íΘÑ⌐ Γ«τ¬«⌐ óσ«ñá ñ½∩  óßÑσ  »α«úαá¼¼).  æ  ñαπú«⌐
  1226. ßΓ«α«¡δ,  ∩ñα« ¼«ªÑΓ óδºδóáΓ∞ Σπ¡¬µ¿ε exit »« ßó«Ñ⌐ ¿¡¿µ¿áΓ¿óÑ, Ñß½¿ »α«µÑßß
  1227. ¡Ñ »α¿¡∩½ »«ß½á¡¡δ⌐ Ñ¼π ß¿ú¡á½ («í φΓ«¼ ¼δ πªÑ ú«ó«α¿½¿ óδΦÑ). é φΓ«¼ ß½πτáÑ
  1228. º¡áτÑ¡¿Ñ »áαá¼ÑΓαá status αáó¡« ¡«¼Ñαπ ß¿ú¡á½á.
  1229.     æ¿ßΓѼᠡѠ¡á¬½áñδóáÑΓ ¡¿¬á¬«ú« «úαá¡¿τÑ¡¿∩ ¡á »α«ñ«½ª¿Γѽ∞¡«ßΓ∞  óδ»«½-
  1230. ¡Ñ¡¿∩ »α«µÑßßá, ¿ ºáτáßΓπε »α«µÑßßδ ßπΘÑßΓóπεΓ ó ΓÑτÑ¡¿Ñ ñ«ó«½∞¡« ñ½¿Γѽ∞¡«-
  1231. ú«  óαѼѡ¿. ìπ½Ñó«⌐ »α«µÑßß (»α«úαἼᠻ«ñ¬áτ¬¿) ¿ »α«µÑßß 1 (init), ¬ »α¿-
  1232. ¼Ñαπ, ßπΘÑßΓóπεΓ ¡á »α«Γ∩ªÑ¡¿¿ óßÑú« óαѼѡ¿ ª¿º¡¿ ß¿ßΓѼδ. Åα«ñ«½ª¿Γѽ∞¡δ¼¿
  1233. »α«µÑßßἿ ∩ó½∩εΓß∩ ΓᬪѠgetty-»α«µÑßßδ, ¬«¡Γα«½¿απεΘ¿Ñ αáí«Γπ ΓÑନ¡á½∞¡«⌐
  1234. ½¿¡¿¿, «ª¿ñá∩ αÑú¿ßΓαᵿ¿ »«½∞º«óáΓѽÑ⌐, ¿ »α«µÑßßδ «íΘÑú«  ¡áº¡áτÑ¡¿∩,  óδ-
  1235. »«½¡∩ѼδÑ »«ñ απ¬«ó«ñßΓó«¼ áñ¼¿¡¿ßΓαáΓ«αá.
  1236.     ìá  É¿ßπ¡¬Ñ  7.14  »α¿óÑñÑ¡ á½ú«α¿Γ¼ Σπ¡¬µ¿¿ exit. æ¡áτá½á ∩ñα« «Γ¼Ñ¡∩ÑΓ
  1237. «íαáí«Γ¬π óßÑσ ß¿ú¡á½«ó, »«ßδ½áѼδσ »α«µÑßßπ, »«ß¬«½∞¬π ÑÑ »α«ñ«½ªÑ¡¿Ñ  ßΓá-
  1238. ¡«ó¿Γß∩  íÑßß¼δ߽ѡ¡δ¼.  àß½¿  »α«µÑßß, óδºδóáεΘ¿⌐ Σπ¡¬µ¿ε exit, ó«ºú½áó½∩ÑΓ
  1239.  
  1240.  
  1241.                                     198
  1242.  
  1243.     ┌────────────────────────────────────────────────────────────┐
  1244.     │ á½ú«α¿Γ¼ exit                                              │
  1245.     │ óσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩:  ¬«ñ, ó«ºóαáΘáѼδ⌐ α«ñ¿Γѽ∞߬«¼π »α«-  │
  1246.     │                      µÑßßπ                                 │
  1247.     │ óδσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩: «ΓßπΓßΓóπÑΓ                           │
  1248.     │ {                                                          │
  1249.     │    ¿ú¡«α¿α«óáΓ∞ óßÑ ß¿ú¡á½δ;                               │
  1250.     │    Ñß½¿ (»α«µÑßß ó«ºú½áó½∩ÑΓ úαπ»»π »α«µÑßß«ó, áßß«µ¿¿α«-  │
  1251.     │     óá¡¡πε ß «»ÑαáΓ«α߬¿¼ ΓÑନ¡á½«¼)                      │
  1252.     │    {                                                       │
  1253.     │       »«ß½áΓ∞ óßѼ »α«µÑßßá¼, óσ«ñ∩Θ¿¼ ó úαπ»»π, ß¿ú¡á½ «  │
  1254.     │        "ºáó¿ßá¡¿¿";                                        │
  1255.     │       ßíα«ß¿Γ∞ ó ¡«½∞ ¬«ñ úαπ»»δ »α«µÑßß«ó;                │
  1256.     │    }                                                       │
  1257.     │    ºá¬αδΓ∞ óßÑ «Γ¬αδΓδÑ Σá⌐½δ (ó¡πΓαÑ¡¡∩∩ ¼«ñ¿Σ¿¬áµ¿∩ á½ú«-│
  1258.     │     α¿Γ¼á close);                                          │
  1259.     │    «ßó«í«ñ¿Γ∞ ΓѬπΘ¿⌐ ¬áΓὫú (á½ú«α¿Γ¼ iput);             │
  1260.     │    «ßó«í«ñ¿Γ∞ «í½áßΓ¿ ¿ »á¼∩Γ∞, áßß«µ¿¿α«óá¡¡πε ß »α«µÑßß«¼│
  1261.     │     (á½ú«α¿Γ¼ freereg);                                    │
  1262.     │    ß«ºñáΓ∞ ºá»¿ß∞ ß πτÑΓ¡«⌐ ¿¡Σ«α¼áµ¿Ñ⌐;                   │
  1263.     │    »αѬαáΓ¿Γ∞ ßπΘÑßΓó«óá¡¿Ñ »α«µÑßßá (»ÑαÑóÑßΓ¿ Ñú« ó ß««Γ-│
  1264.     │     óÑΓßΓóπεΘÑÑ ß«ßΓ«∩¡¿Ñ);                                │
  1265.     │    ¡áº¡áτ¿Γ∞ óßѼ »α«µÑßßá¼-»«Γ«¼¬á¼ ó ¬áτÑßΓóÑ α«ñ¿Γѽ∩   │
  1266.     │     »α«µÑßß init (1);                                      │
  1267.     │       Ñß½¿ ¬Γ«-½¿í« ¿º »«Γ«¼¬«ó »αѬαáΓ¿½ ßπΘÑßΓó«óá¡¿Ñ,   │
  1268.     │        »«ß½áΓ∞ »α«µÑßßπ init ß¿ú¡á½ "ú¿íѽ∞ »«Γ«¼¬á";      │
  1269.     │    »«ß½áΓ∞ ß¿ú¡á½ "ú¿íѽ∞ »«Γ«¼¬á" α«ñ¿Γѽε ñá¡¡«ú« »α«µÑß-│
  1270.     │     ßá;                                                    │
  1271.     │    »ÑαѬ½ετ¿Γ∞ ¬«¡ΓѬßΓ;                                   │
  1272.     │ }                                                          │
  1273.     └────────────────────────────────────────────────────────────┘
  1274.  
  1275.                  É¿ßπ¡«¬ 7.14. Ç½ú«α¿Γ¼ Σπ¡¬µ¿¿ exit
  1276.  
  1277. úαπ»»π »α«µÑßß«ó, áßß«µ¿¿α«óá¡¡πε  ß  «»ÑαáΓ«α߬¿¼  ΓÑନ¡á½«¼  (ß¼.  αáºñѽ
  1278. 10.3.5),  ∩ñα« ñѽáÑΓ »αÑñ»«½«ªÑ¡¿Ñ « Γ«¼, τΓ« »«½∞º«óáΓѽ∞ »αѬαáΘáÑΓ αáí«-
  1279. Γπ, ¿ »«ßδ½áÑΓ óßѼ »α«µÑßßá¼ ó úαπ»»Ñ ß¿ú¡á½ « "ºáó¿ßá¡¿¿". Æá¬¿¼  «íαẫ¼,
  1280. Ñß½¿  »«½∞º«óáΓѽ∞  ó αÑú¿ßΓαᵿ«¡¡«¼ shell'Ñ ¡áª¼ÑΓ »«ß½Ññ«óáΓѽ∞¡«ßΓ∞ ¬½á-
  1281. ó¿Φ, «º¡áτáεΘπε "¬«¡Ñµ Σá⌐½á" (Ctrl-d), »α¿ φΓ«¼ ß ΓÑନ¡á½«¼ «ßΓ὿ß∞  ßó∩-
  1282. ºá¡¡δ¼¿  ¡Ñ¬«Γ«αδÑ  ¿º  ßπΘÑßΓóπεΘ¿σ »α«µÑßß«ó, »α«µÑßß, óδ»«½¡∩εΘ¿⌐ Σπ¡¬µ¿ε
  1283. exit, »«Φ½ÑΓ ¿¼ óßѼ ß¿ú¡á½ « "ºáó¿ßá¡¿¿". èα«¼Ñ  Γ«ú«,  ∩ñα«  ßíαáßδóáÑΓ  ó
  1284. ¡«½∞  º¡áτÑ¡¿Ñ  ¬«ñá  úαπ»»δ »α«µÑßß«ó ñ½∩ óßÑσ »α«µÑßß«ó, óσ«ñ∩Θ¿σ ó ñá¡¡πε
  1285. úαπ»»π, »«ß¬«½∞¬π ¡Ñ ¿ß¬½ετÑ¡á ó«º¼«ª¡«ßΓ∞ Γ«ú«,  τΓ«  »«ºñ¡ÑÑ  ΓѬπΘ¿⌐  ¬«ñ
  1286. ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ »α«µÑßßá (»α«µÑßßá, ¬«Γ«αδ⌐ óδºóá½ Σπ¡¬µ¿ε exit) íπñÑΓ »α¿ßó«-
  1287. Ñ¡  ñαπú«¼π  »α«µÑßßπ  ¿ Γ«úñá »«ß½Ññ¡¿⌐ ó«ºú½áó¿Γ úαπ»»π ß π¬áºá¡¡δ¼ ¬«ñ«¼.
  1288. Åα«µÑßßδ, óσ«ñ¿óΦ¿Ñ ó ßΓáαπε úαπ»»π, ó ¡«óπε úαπ»»π óσ«ñ¿Γ∞ ¡Ñ íπñπΓ.  Å«ß½Ñ
  1289. φΓ«ú«  ∩ñα«  »α«ß¼áΓα¿óáÑΓ  ñÑß¬α¿»Γ«αδ «Γ¬αδΓδσ Σá⌐½«ó, ºá¬αδóáÑΓ ¬áªñδ⌐ ¿º
  1290. φΓ¿σ Σá⌐½«ó »« á½ú«α¿Γ¼π close ¿ «ßó«í«ªñáÑΓ »« á½ú«α¿Γ¼π iput ¿¡ñѬßδ ΓѬπ-
  1291. ΘÑú« ¬áΓὫúá ¿ ¬«α¡∩ (Ñß½¿ «¡ ¿º¼Ñ¡∩½ß∩).
  1292.     ìᬫ¡Ñµ, ∩ñα« «ßó«í«ªñáÑΓ óßε óδñѽѡ¡πε ºáñáτÑ »á¼∩Γ∞ ó¼ÑßΓÑ ß ß««ΓóÑΓ-
  1293. ßΓóπεΘ¿¼¿ «í½áßΓ∩¼¿ (»« á½ú«α¿Γ¼π detachreg) ¿ »ÑαÑó«ñ¿Γ »α«µÑßß ó ß«ßΓ«∩¡¿Ñ
  1294. »αѬαáΘÑ¡¿∩ ßπΘÑßΓó«óá¡¿∩. ƒñα« ß«σαá¡∩ÑΓ ó Γáí½¿µÑ »α«µÑß߫󠠬«ñ  ó«ºóαáΓá
  1295. Σπ¡¬µ¿¿ exit (status), á ΓᬪѠßπ¼¼áα¡«Ñ óαѼ∩ ¿ß»«½¡Ñ¡¿∩ »α«µÑßßá ¿ Ñú« »«-
  1296. Γ«¼¬«ó ó αѪ¿¼Ñ ∩ñαá ¿ αѪ¿¼Ñ ºáñáτ¿. é αáºñѽѠ7.4 »α¿ αáßß¼«ΓαÑ¡¿¿ Σπ¡¬µ¿¿
  1297. wait íπñÑΓ »«¬áºá¡«, ¬á¬¿¼ «íαẫ¼ »α«µÑßß »«½πτáÑΓ ¿¡Σ«α¼áµ¿ε « óαѼѡ¿ óδ-
  1298. »«½¡Ñ¡¿∩  ßó«¿σ  »«Γ«¼¬«ó. ƒñα« ΓᬪѠ߫ºñáÑΓ ó ú½«íá½∞¡«¼ πτÑΓ¡«¼ Σá⌐½Ñ ºá-
  1299. »¿ß∞, ¬«Γ«αá∩ ß«ñÑαª¿Γ αẽ¿τ¡πε ßΓáΓ¿ßΓ¿τÑ߬πε ¿¡Σ«α¼áµ¿ε « óδ»«½¡Ñ¡¿¿ »α«-
  1300. µÑßßá, Γá¬πε ¬á¬ ¬«ñ ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ »«½∞º«óáΓѽ∩, ¿ß»«½∞º«óá¡¿Ñ αÑßπαß«ó µÑ¡-
  1301. Γαá½∞¡«ú« »α«µÑßß«αá ¿ »á¼∩Γ¿, «íΩѼ »«Γ«¬«ó óó«ñá-óδó«ñá, ßó∩ºá¡¡δσ ß  »α«-
  1302.  
  1303.                                     199
  1304.  
  1305. µÑßß«¼. Å«½∞º«óáΓѽ∞߬¿Ñ »α«úαá¼¼δ ¼«úπΓ ó ½εí«⌐ ¼«¼Ñ¡Γ «íαáΓ¿Γ∞ß∩ ¬ πτÑΓ¡«-
  1306. ¼π  Σá⌐½π ºá ßΓáΓ¿ßΓ¿τÑ߬¿¼¿ ñá¡¡δ¼¿, »αÑñßΓáó½∩εΘ¿¼¿ ¿¡ΓÑαÑß ß Γ«τ¬¿ ºαÑ¡¿∩
  1307. ߽Ѫѡ¿∩ ºá Σπ¡¬µ¿«¡¿α«ó᡿Ѽ ß¿ßΓÑ¼δ ¿ «αúá¡¿ºáµ¿¿ αáßτÑΓ«ó ß »«½∞º«óáΓѽ∩-
  1308. ¼¿. ƒñα« πñá½∩ÑΓ »α«µÑßß ¿º ñÑαÑóá »α«µÑßß«ó, á Ñú« »«Γ«¼¬«ó  »ÑαÑñáÑΓ  »α«-
  1309. µÑßßπ  1 (init). Æá¬¿¼ «íαẫ¼, »α«µÑßß 1 ßΓá¡«ó¿Γß∩ ºá¬«¡¡δ¼ α«ñ¿ΓѽѼ óßÑσ
  1310. »α«ñ«½ªáεΘ¿σ ßπΘÑßΓó«óá¡¿Ñ »«Γ«¼¬«ó ºáóÑαΦáεΘÑú«ß∩ »α«µÑßßá.  àß½¿  ¬Γ«-½¿í«
  1311. ¿º »«Γ«¼¬«ó »αѬαáΘáÑΓ ßπΘÑßΓó«óá¡¿Ñ, ºáóÑαΦáεΘ¿⌐ß∩ »α«µÑßß »«ßδ½áÑΓ »α«µÑß-
  1312. ßπ  init  ß¿ú¡á½ "ú¿íѽ∞ »«Γ«¼¬á" ñ½∩ Γ«ú«, τΓ«íδ »α«µÑßß ¡áτá½∞¡«⌐ ºáúαπº¬¿
  1313. ¼«ú πñ὿Γ∞ ºá»¿ß∞ « »«Γ«¼¬Ñ ¿º Γáí½¿µδ »α«µÑßß«ó (ß¼.  αáºñѽ  7.9);  ¬α«¼Ñ
  1314. Γ«ú«, ºáóÑαΦáεΘ¿⌐ß∩ »α«µÑßß »«ßδ½áÑΓ φΓ«Γ ß¿ú¡á½ ßó«Ñ¼π α«ñ¿Γѽε. é Γ¿»¿τ¡«⌐
  1315. ß¿Γπᵿ¿ α«ñ¿Γѽ∞߬¿⌐ »α«µÑßß ß¿¡σα«¡¿º¿απÑΓ ßó«Ñ óδ»«½¡Ñ¡¿Ñ ß ºáóÑαΦáεΘ¿¼ß∩
  1316. »«Γ«¼¬«¼  ß »«¼«Θ∞ε ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿ wait. ÅαѬαáΘá∩ ßπΘÑßΓó«óá¡¿Ñ, »α«µÑßß
  1317. »ÑαѬ½ετáÑΓ ¬«¡ΓѬßΓ ¿ ∩ñα« ¼«ªÑΓ ΓÑ»Ñα∞ óδí¿αáΓ∞ ñ½∩  ¿ß»«½¡Ñ¡¿∩  ß½ÑñπεΘ¿⌐
  1318. »α«µÑßß; ∩ñα« ß φΓ¿σ »«α πªÑ ¡Ñ íπñÑΓ ¿ß»«½¡∩Γ∞ »α«µÑßß, »αѬαáΓ¿óΦ¿⌐ ßπΘÑß-
  1319. Γó«óá¡¿Ñ.
  1320.     é »α«úαá¼¼Ñ, »α¿óÑñÑ¡¡«⌐ ¡á É¿ßπ¡¬Ñ 7.15, »α«µÑßß ß«ºñáÑΓ ¡«óδ⌐ »α«µÑßß,
  1321. ¬«Γ«αδ⌐  »ÑτáΓáÑΓ ßó«⌐ ¬«ñ ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ ¿ óδºδóáÑΓ ß¿ßΓѼ¡πε Σπ¡¬µ¿ε pause,
  1322. »α¿«ßΓá¡áó½¿óá∩ß∞ ñ« »«½πτÑ¡¿∩ ß¿ú¡á½á. Åα«µÑßß-α«ñ¿Γѽ∞ »ÑτáΓáÑΓ PID ßó«Ñú«
  1323. »«Γ«¼¬á ¿ ºáóÑαΦáÑΓß∩, ó«ºóαáΘá∩ Γ«½∞¬« τΓ« óδóÑñÑ¡¡«Ñ º¡áτÑ¡¿Ñ τÑαѺ  »áαá-
  1324. ¼ÑΓα  status.  àß½¿  íδ ó맮ó Σπ¡¬µ¿¿ exit «ΓßπΓßΓó«óá½, ¡áτá½∞¡á∩ »α«µÑñπαá
  1325. ßñѽá½á íδ Ñú« »« óδσ«ñÑ »α«µÑßßá ¿º Σπ¡¬µ¿¿ main. Å«α«ªñÑ¡¡δ⌐ »α«µÑßß  »α«-
  1326. ñ«½ªáÑΓ «ª¿ñáΓ∞ »«½πτÑ¡¿∩ ß¿ú¡á½á, ñáªÑ Ñß½¿ Ñú« α«ñ¿Γѽ∞ πªÑ ºáóÑαΦ¿½ß∩.
  1327.  
  1328.  
  1329.     E7.4 ÄåêäÇìêà çÇéàÉÿàìꃠé¢ÅÄïìàìꃠÅÉÄûàææÇF
  1330.  
  1331.     Åα«µÑßß  ¼«ªÑΓ ß¿¡σα«¡¿º¿α«óáΓ∞ »α«ñ«½ªÑ¡¿Ñ ßó«Ñú« óδ»«½¡Ñ¡¿∩ ß ¼«¼Ñ¡Γ«¼
  1332. ºáóÑαΦÑ¡¿∩ »«Γ«¼¬á, Ñß½¿ ó«ß»«½∞ºπÑΓß∩ ß¿ßΓѼ¡«⌐  Σπ¡¬µ¿Ñ⌐  wait.  æ¿¡Γá¬ß¿ß
  1333. ó맮óá Σπ¡¬µ¿¿:
  1334.  
  1335.     ┌────────────────────────────────────────────────────────────┐
  1336.     │ main()                                                     │
  1337.     │ {                                                          │
  1338.     │     int child;                                             │
  1339.     │                                                            │
  1340.     │     if ((child = fork()) == 0)                             │
  1341.     │     {                                                      │
  1342.     │         printf("PID »«Γ«¼¬á %d\n",getpid());               │
  1343.     │         pause();     /* »α¿«ßΓá¡«ó óδ»«½¡Ñ¡¿∩ ñ« »«½πτÑ¡¿∩ │
  1344.     │                         ß¿ú¡á½á */                         │
  1345.     │     }                                                      │
  1346.     │     /* α«ñ¿Γѽ∞ */                                         │
  1347.     │     printf("PID »«Γ«¼¬á %d\n",child);                      │
  1348.     │     exit(child);                                           │
  1349.     │ }                                                          │
  1350.     └────────────────────────────────────────────────────────────┘
  1351.  
  1352.           É¿ßπ¡«¬ 7.15. Åα¿¼Ñα ¿ß»«½∞º«óá¡¿∩ Σπ¡¬µ¿¿ exit
  1353.  
  1354.  
  1355.     pid = wait(stat_addr);
  1356. úñÑ pid - º¡áτÑ¡¿Ñ ¬«ñá ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ (PID) »αѬαáΓ¿óΦÑú« ßó«Ñ ßπΘÑßΓó«óá¡¿Ñ
  1357. »«Γ«¼¬á,  stat_addr - áñαÑß »ÑαѼѡ¡«⌐ µÑ½«ú« Γ¿»á, ó ¬«Γ«απε íπñÑΓ »«¼ÑΘÑ¡«
  1358. ó«ºóαáΘáѼ«Ñ Σπ¡¬µ¿Ñ⌐ exit º¡áτÑ¡¿Ñ, ó »α«ßΓαá¡ßΓóÑ ºáñáτ¿.
  1359.     Ç½ú«α¿Γ¼ Σπ¡¬µ¿¿ wait »α¿óÑñÑ¡ ¡á É¿ßπ¡¬Ñ 7.16. ƒñα« óÑñÑΓ »«¿ß¬  »«Γ«¼-
  1360. ¬«ó »α«µÑßßá, »αѬαáΓ¿óΦ¿σ ßπΘÑßΓó«óá¡¿Ñ, ¿ ó ß½πτáÑ ¿σ «ΓßπΓßΓó¿∩ ó«ºóαáΘá-
  1361. ÑΓ «Φ¿í¬π. àß½¿ »«Γ«¼«¬, »αѬαáΓ¿óΦ¿⌐ ßπΘÑßΓó«óá¡¿Ñ, «í¡áαπªÑ¡, ∩ñα« »ÑαÑñá-
  1362. ÑΓ  Ñú«  ¬«ñ  ¿ñÑ¡Γ¿Σ¿¬áµ¿¿  ¿ º¡áτÑ¡¿Ñ, ó«ºóαáΘáѼ«Ñ τÑαѺ »áαá¼ÑΓα Σπ¡¬µ¿¿
  1363. exit, »α«µÑßßπ, óδºóáóΦѼπ Σπ¡¬µ¿ε wait. Æá¬¿¼ «íαẫ¼, τÑαѺ »áαá¼ÑΓα Σπ¡¬-
  1364.  
  1365.                                     200
  1366.  
  1367. µ¿¿ exit (status) ºáóÑαΦáεΘ¿⌐ß∩ »α«µÑßß ¼«ªÑΓ »ÑαÑñáóáΓ∞ αẽ¿τ¡δÑ º¡áτÑ¡¿∩,
  1368. ó ºá¬«ñ¿α«óá¡¡«¼ ó¿ñÑ ß«ñÑαªáΘ¿Ñ ¿¡Σ«α¼áµ¿ε « »α¿τ¿¡Ñ  ºáóÑαΦÑ¡¿∩  »α«µÑßßá,
  1369. «ñ¡á¬«  ¡á »αá¬Γ¿¬Ñ φëà»áαá¼ÑΓα ¿ß»«½∞ºπÑΓß∩ »« ¡áº¡áτÑ¡¿ε ñ«ó«½∞¡« αÑñ¬«.
  1370. ƒñα« »ÑαÑñáÑΓ ó ß««ΓóÑΓßΓóπεΘ¿Ñ »«½∩, »α¿¡áñ½ÑªáΘ¿Ñ  »α«ßΓαá¡ßΓóπ  α«ñ¿Γѽ∞-
  1371. ߬«ú«  »α«µÑßßá,  ¡á¬«»½Ñ¡¡δÑ  º¡áτÑ¡¿∩ »α«ñ«½ª¿Γѽ∞¡«ßΓ¿ ¿ß»«½¡Ñ¡¿∩ »α«µÑß-
  1372. ßá-»«Γ«¼¬á ó αѪ¿¼Ñ ∩ñαá ¿ ó αѪ¿¼Ñ ºáñáτ¿ ¿, ¡á¬«¡Ñµ, «ßó«í«ªñáÑΓ ó Γáí½¿µÑ
  1373. »α«µÑßß«ó ¼ÑßΓ«, ¬«Γ«α«Ñ ó ¡Ñ⌐  ºá¡¿¼á½  »αѪñÑ  »αѬαáΓ¿óΦ¿⌐  ßπΘÑßΓó«óá¡¿Ñ
  1374. »α«µÑßß. ¥Γ« ¼ÑßΓ« íπñÑΓ »αÑñ«ßΓáó½Ñ¡« ¡«ó«¼π »α«µÑßßπ.
  1375.     àß½¿ »α«µÑßß, óδ»«½¡∩εΘ¿⌐ Σπ¡¬µ¿ε wait, ¿¼ÑÑΓ »«Γ«¼¬«ó, »α«ñ«½ªáεΘ¿σ ßπ-
  1376. ΘÑßΓó«óá¡¿Ñ,  «¡ »α¿«ßΓá¡áó½¿óáÑΓß∩ ñ« »«½πτÑ¡¿∩ «ª¿ñáѼ«ú« ß¿ú¡á½á. ƒñα« ¡Ñ
  1377. ó«º«í¡«ó½∩ÑΓ »« ßó«Ñ⌐ ¿¡¿µ¿áΓ¿óÑ »α«µÑßß, »α¿«ßΓá¡«ó¿óΦ¿⌐ß∩ ß »«¼«Θ∞ε  Σπ¡¬-
  1378. µ¿¿ wait: Γᬫ⌐ »α«µÑßß ¼«ªÑΓ ó«º«í¡«ó¿Γ∞ß∩ Γ«½∞¬« ó ß½πτáÑ »«½πτÑ¡¿∩ ß¿ú¡á-
  1379. ½á.  ìá óßÑ ß¿ú¡á½δ, ¬α«¼Ñ ß¿ú¡á½á "ú¿íѽ∞ »«Γ«¼¬á", »α«µÑßß αÑáú¿απÑΓ αá¡ÑÑ
  1380. αáßß¼«ΓαÑ¡¡δ¼ «íαẫ¼. ÉÑᬵ¿∩ »α«µÑßßá ¡á ß¿ú¡á½ "ú¿íѽ∞ »«Γ«¼¬á"  »α«∩ó½∩-
  1381. ÑΓß∩ »«-αạ«¼π ó ºáó¿ß¿¼«ßΓ¿ «Γ «íßΓ«∩Γѽ∞ßΓó:
  1382.   * Å« π¼«½τá¡¿ε (Γ« ÑßΓ∞ Ñß½¿ ß»Ñµ¿á½∞¡« ¡Ñ «ú«ó«αÑ¡δ ¡¿¬á¬¿Ñ ñαπú¿Ñ ñÑ⌐ßΓ-
  1383.     ó¿∩) »α«µÑßß óδσ«ñ¿Γ ¿º ß«ßΓ«∩¡¿∩ «ßΓá¡«óá, ó ¬«Γ«α«Ñ «¡ ó«Φѽ ß »«¼«Θ∞ε
  1384.     Σπ¡¬µ¿¿ wait, ¿ ºá»π߬áÑΓ á½ú«α¿Γ¼ issig ñ½∩ «»«º¡á¡¿∩ Γ¿»á »«ßΓπ»¿óΦÑú«
  1385.     ß¿ú¡á½á.  Ç½ú«α¿Γ¼  issig (É¿ßπ¡«¬ 7.7) αáßß¼áΓα¿óáÑΓ «ß«íδ⌐ ß½πτá⌐ »«ß-
  1386.     Γπ»½Ñ¡¿∩ ß¿ú¡á½á Γ¿»á "ú¿íѽ∞ »«Γ«¼¬á" ¿ ó«ºóαáΘáÑΓ "½«ª∞". Å«φΓ«¼π ∩ñα«
  1387.     ¡Ñ óδ»«½¡∩ÑΓ longjump ¿º Σπ¡¬µ¿¿ sleep, á ó«ºóαáΘáÑΓ π»αáó½Ñ¡¿Ñ  Σπ¡¬µ¿¿
  1388.     wait. Ä¡« »ÑαѺá»π߬áÑΓ Σπ¡¬µ¿ε wait, ¡áσ«ñ¿Γ »«Γ«¼¬«ó, »αѬαáΓ¿óΦ¿σ ßπ-
  1389.     ΘÑßΓó«óá¡¿Ñ  (»« ¬αá⌐¡Ñ⌐ ¼ÑαÑ, «ñ¡«ú«), «ßó«í«ªñáÑΓ ¼ÑßΓ« ó Γáí½¿µÑ »α«-
  1390.     µÑßß«ó, ºá¡¿¼áѼ«Ñ φΓ¿¼¿ »«Γ«¼¬á¼¿, ¿ óδσ«ñ¿Γ ¿º Σπ¡¬µ¿¿ wait, ó«ºóαáΘá∩
  1391.  
  1392.     ┌────────────────────────────────────────────────────────────┐
  1393.     │ á½ú«α¿Γ¼ wait                                              │
  1394.     │ óσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩:  áñαÑß »ÑαѼѡ¡«⌐ ñ½∩ σαá¡Ñ¡¿∩ º¡áτÑ¡¿∩│
  1395.     │                      status, ó«ºóαáΘáѼ«ú« ºáóÑαΦáεΘ¿¼ß∩   │
  1396.     │                      »α«µÑßß«¼                             │
  1397.     │ óδσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩: ¿ñÑ¡Γ¿Σ¿¬áΓ«α »«Γ«¼¬á ¿ ¬«ñ ó«ºóαáΓá  │
  1398.     │                      Σπ¡¬µ¿¿ exit                          │
  1399.     │ {                                                          │
  1400.     │    Ñß½¿ (»α«µÑßß, óδºóáóΦ¿⌐ Σπ¡¬µ¿ε wait, ¡Ñ ¿¼ÑÑΓ »«Γ«¼-  │
  1401.     │     ¬«ó)                                                   │
  1402.     │         ó«ºóαáΓ¿Γ∞ («Φ¿í¬π);                               │
  1403.     │                                                            │
  1404.     │    ñ½∩ (;;)     /* µ¿¬½ ß ó¡πΓαÑ¡¡¿¼ µ¿¬½«¼ */             │
  1405.     │    {                                                       │
  1406.     │         Ñß½¿ (»α«µÑßß, óδºóáóΦ¿⌐ Σπ¡¬µ¿ε wait, ¿¼ÑÑΓ »«Γ«¼-│
  1407.     │          ¬«ó, »αѬαáΓ¿óΦ¿σ ßπΘÑßΓó«óá¡¿Ñ)                  │
  1408.     │         {                                                  │
  1409.     │             óδíαáΓ∞ »α«¿ºó«½∞¡«ú« »«Γ«¼¬á;                 │
  1410.     │             »ÑαÑñáΓ∞ Ñú« α«ñ¿ΓÑ½ε ¿¡Σ«α¼áµ¿ε «í ¿ß»«½∞º«óá-│
  1411.     │              ¡¿¿ »«Γ«¼¬«¼ αÑßπαß«ó µÑ¡Γαá½∞¡«ú« »α«µÑßß«αá;│
  1412.     │             «ßó«í«ñ¿Γ∞ ó Γáí½¿µÑ »α«µÑßß«ó ¼ÑßΓ«, ºá¡¿¼áÑ- │
  1413.     │              ¼«Ñ »«Γ«¼¬«¼;                                 │
  1414.     │             ó«ºóαáΓ¿Γ∞ (¿ñÑ¡Γ¿Σ¿¬áΓ«α »«Γ«¼¬á, ¬«ñ ó«ºóαáΓá│
  1415.     │              Σπ¡¬µ¿¿ exit, óδºóá¡¡«⌐ »«Γ«¼¬«¼);            │
  1416.     │         }                                                  │
  1417.     │         Ñß½¿ (π »α«µÑßßá ¡ÑΓ »«Γ«¼¬«ó)                     │
  1418.     │             ó«ºóαáΓ¿Γ∞ «Φ¿í¬π;                             │
  1419.     │         »α¿«ßΓá¡«ó¿Γ∞ß∩ ß »α¿«α¿ΓÑΓ«¼, ñ«»π߬áεΘ¿¼ »αÑαδóá-│
  1420.     │          ¡¿∩ (ñ« ºáóÑαΦÑ¡¿∩ »«Γ«¼¬á);                      │
  1421.     │    }                                                       │
  1422.     │ }                                                          │
  1423.     └────────────────────────────────────────────────────────────┘
  1424.  
  1425.                É¿ßπ¡«¬ 7.16. Ç½ú«α¿Γ¼ Σπ¡¬µ¿¿ wait
  1426.  
  1427.                                     201
  1428.  
  1429.  
  1430.  
  1431.     π»αáó½Ñ¡¿Ñ »α«µÑßßπ, óδºóáóΦѼπ ÑÑ.
  1432.   * àß½¿ »α«µÑßßδ »α¿¡¿¼áÑΓ ß¿ú¡á½δ ñá¡¡«ú« Γ¿»á, ∩ñα« ñѽáÑΓ óßÑ  ¡Ñ«íσ«ñ¿-
  1433.     ¼δÑ  πßΓᡫ󬿠 ñ½∩  ºá»π߬ᠻ«½∞º«óáΓѽ∞߬«⌐ Σπ¡¬µ¿¿ «íαáí«Γ¬¿ ß¿ú¡á½á,
  1434.     ¬á¬ ¿ ó ß½πτáÑ »«ßΓπ»½Ñ¡¿∩ ß¿ú¡á½á ½εí«ú« ñαπú«ú« Γ¿»á.
  1435.   * àß½¿ »α«µÑßß ¿ú¡«α¿απÑΓ ß¿ú¡á½δ ñá¡¡«ú« Γ¿»á, ∩ñα« »ÑαѺá»π߬áÑΓ Σπ¡¬µ¿ε
  1436.     wait, «ßó«í«ªñáÑΓ ó Γáí½¿µÑ »α«µÑßß«ó ¼ÑßΓ«, ºá¡¿¼áѼ«Ñ »«Γ«¼¬á¼¿, »αѬ-
  1437.     αáΓ¿óΦ¿¼¿ ßπΘÑßΓó«óá¡¿Ñ, ¿ ¿ßß½ÑñπÑΓ «ßΓáóΦ¿σß∩ »«Γ«¼¬«ó.
  1438.  
  1439.     ìá»α¿¼Ñα, Ñß½¿ »«½∞º«óáΓѽ∞ ºá»π߬áÑΓ »α«úαá¼¼π, »α¿óÑñÑ¡¡πε ¡á  É¿ßπ¡¬Ñ
  1440. 7.17,  ß  »áαá¼ÑΓα«¼  ¿ íѺ »áαá¼ÑΓαá, «¡ »«½πτ¿Γ αạδÑ αѺπ½∞ΓáΓδ. æ¡áτá½á
  1441. αáßß¼«Γα¿¼ ß½πτá⌐, ¬«úñá  »«½∞º«óáΓѽ∞  ºá»π߬áÑΓ  »α«úαá¼¼π  íѺ  »áαá¼ÑΓαá
  1442. (Ññ¿¡ßΓóÑ¡¡δ⌐  »áαá¼ÑΓα - ¿¼∩ »α«úαá¼¼δ, Γ« ÑßΓ∞ argc αáó¡« 1). É«ñ¿Γѽ∞߬¿⌐
  1443. »α«µÑßß »«α«ªñáÑΓ 15 »«Γ«¼¬«ó, ¬«Γ«αδѠ󠬫¡Ñτ¡«¼ ¿Γ«úÑ ºáóÑαΦáεΓ  ßó«Ñ  óδ-
  1444. »«½¡Ñ¡¿Ñ  ß  ¬«ñ«¼ ó«ºóαáΓá i, ¡«¼Ñα«¼ »α«µÑßßá ó »«α∩ñ¬Ñ «τÑαÑñ¡«ßΓ¿ ß«ºñá-
  1445. ¡¿∩. ƒñα«, ¿ß»«½¡∩∩ Σπ¡¬µ¿ε wait ñ½∩ α«ñ¿Γѽ∩, ¡áσ«ñ¿Γ »«Γ«¼¬á, »αѬαáΓ¿óΦÑ-
  1446. ú« ßπΘÑßΓó«óá¡¿Ñ, ¿ »ÑαÑñáÑΓ α«ñ¿Γѽε Ñú« ¿ñÑ¡Γ¿Σ¿¬áΓ«α ¿ ¬«ñ ó«ºóαáΓá Σπ¡¬-
  1447. µ¿¿ exit. Åα¿ φΓ«¼ ºáαá¡ÑÑ ¡Ñ ¿ºóÑßΓ¡«, ¬á¬«⌐ ¿º »«Γ«¼¬«ó  íπñÑΓ  «í¡áαπªÑ¡.
  1448. 꺠ΓѬßΓá »α«úαá¼¼δ, αÑ὿ºπεΘÑ⌐ ß¿ßΓѼ¡πε Σπ¡¬µ¿ε exit, ¡á»¿ßá¡¡«⌐ ¡á ∩ºδ¬Ñ
  1449. æ¿  ¿  ó¬½ετÑ¡¡«⌐ ó í¿í½¿«ΓѬπ ßΓá¡ñáαΓ¡δσ »«ñ»α«úαá¼¼, ó¿ñ¡«, τΓ« »α«úαá¼¼á
  1450. ºá»«¼¿¡áÑΓ ¬«ñ ó«ºóαáΓá Σπ¡¬µ¿¿ exit ó í¿Γáσ 8-15 »«½∩ ret_code ¿ ó«ºóαáΘáÑΓ
  1451. Σπ¡¬µ¿¿ wait ¿ñÑ¡Γ¿Σ¿¬áΓ«α »α«µÑßßá-»«Γ«¼¬á. Æá¬¿¼ «íαẫ¼, ó ret_code  σαá-
  1452. ¡¿Γß∩  º¡áτÑ¡¿Ñ,  αáó¡«Ñ 256*i, úñÑ i - ¡«¼Ñα »«Γ«¼¬á, á ó ret_val ºá¡«ß¿Γß∩
  1453. º¡áτÑ¡¿Ñ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá »«Γ«¼¬á.
  1454.     àß½¿ »«½∞º«óáΓѽ∞ ºá»π߬áÑΓ »α«úαá¼¼π ß »áαá¼ÑΓα«¼ (Γ« ÑßΓ∞ argc  >  1),
  1455. α«ñ¿Γѽ∞߬¿⌐  »α«µÑßß ß »«¼«Θ∞ε Σπ¡¬µ¿¿ signal ñѽáÑΓ αáß»«α∩ªÑ¡¿Ñ ¿ú¡«α¿α«-
  1456. óáΓ∞ ß¿ú¡á½δ Γ¿»á "ú¿íѽ∞ »«Γ«¼¬á". ÅαÑñ»«½«ª¿¼, τΓ«  α«ñ¿Γѽ∞߬¿⌐  »α«µÑßß,
  1457. óδ»«½¡∩∩  Σπ¡¬µ¿ε wait, »α¿«ßΓá¡«ó¿½ß∩ ÑΘÑ ñ« Γ«ú«, ¬á¬ Ñú« »«Γ«¼«¬ »α«¿ºóѽ
  1458. «íαáΘÑ¡¿Ñ ¬ Σπ¡¬µ¿¿ exit: ¬«úñá »α«µÑßß-»«Γ«¼«¬ »ÑαÑσ«ñ¿Γ ¬ óδ»«½¡Ñ¡¿ε Σπ¡¬-
  1459. µ¿¿ exit, «¡ »«ßδ½áÑΓ ßó«Ñ¼π α«ñ¿Γѽε ß¿ú¡á½ "ú¿íѽ∞ »«Γ«¼¬á";  α«ñ¿Γѽ∞߬¿⌐
  1460. »α«µÑßß ó«º«í¡«ó½∩ÑΓß∩, »«ß¬«½∞¬π «¡ íδ½ »α¿«ßΓá¡«ó½Ñ¡ ß »α¿«α¿ΓÑΓ«¼, ñ«»πß-
  1461. ¬áεΘ¿¼  »αÑαδóá¡¿∩.  è«úñá Γᬠ¿½¿ ¿¡áτÑ α«ñ¿Γѽ∞߬¿⌐ »α«µÑßß »α«ñ«½ª¿Γ ßó«Ñ
  1462.  
  1463.     ┌────────────────────────────────────────────────────────────┐
  1464.     │ #include <signal.h>                                        │
  1465.     │ main(argc,argv)                                            │
  1466.     │   int argc;                                                │
  1467.     │   char *argv[];                                            │
  1468.     │ {                                                          │
  1469.     │   int i,ret_val,ret_code;                                  │
  1470.     │                                                            │
  1471.     │   if (argc >= 1)                                           │
  1472.     │       signal(SIGCLD,SIG_IGN);   /* ¿ú¡«α¿α«óáΓ∞ ú¿íѽ∞     │
  1473.     │                                    »«Γ«¼¬«ó */             │
  1474.     │   for (i = 0; i < 15; i++)                                 │
  1475.     │       if (fork() == 0)                                     │
  1476.     │       {                                                    │
  1477.     │           /* »α«µÑßß-»«Γ«¼«¬ */                            │
  1478.     │           printf("»α«µÑßß-»«Γ«¼«¬ %x\n",getpid());         │
  1479.     │           exit(i);                                         │
  1480.     │       }                                                    │
  1481.     │   ret_val = wait(&ret_code);                               │
  1482.     │   printf("wait ret_val %x ret_code %x\n",ret_val,ret_code);│
  1483.     │ }                                                          │
  1484.     └────────────────────────────────────────────────────────────┘
  1485.  
  1486.     É¿ßπ¡«¬ 7.17. Åα¿¼Ñα ¿ß»«½∞º«óá¡¿∩ Σπ¡¬µ¿¿ wait ¿ ¿ú¡«α¿α«óá-
  1487.                   ¡¿∩ ß¿ú¡á½á "ú¿íѽ∞ »«Γ«¼¬á"
  1488.  
  1489.                                     202
  1490.  
  1491.  
  1492. óδ»«½¡Ñ¡¿Ñ, «¡ «í¡áαπª¿Γ, τΓ« ß¿ú¡á½ ß««íΘá½  «  "ú¿íѽ¿"  »«Γ«¼¬á;  «ñ¡á¬«,
  1493. »«ß¬«½∞¬π «¡ ¿ú¡«α¿απÑΓ ß¿ú¡á½δ
  1494. φΓ«ú«  Γ¿»á  ¿ ¡Ñ «íαáíáΓδóáÑΓ ¿σ, ∩ñα« πñá½∩ÑΓ ¿º Γáí½¿µδ »α«µÑßß«ó ºá»¿ß∞,
  1495. ß««ΓóÑΓßΓóπεΘπε »αѬαáΓ¿óΦѼπ ßπΘÑßΓó«óá¡¿Ñ »«Γ«¼¬π, ¿ »α«ñ«½ªáÑΓ óδ»«½¡Ñ¡¿Ñ
  1496. Σπ¡¬µ¿¿ wait Γá¬, ß½«ó¡« ß¿ú¡á½á ¿ ¡Ñ í佫. ƒñα« óδ»«½¡∩ÑΓ φΓ¿ ñÑ⌐ßΓó¿∩ óß∩-
  1497. ¬¿⌐ αáº, ¬«úñá α«ñ¿Γѽ∞߬¿⌐ »α«µÑßß »«½πτáÑΓ ß¿ú¡á½ Γ¿»á  "ú¿íѽ∞  »«Γ«¼¬á",
  1498. ñ«  ΓÑσ  »«α,  »«¬á µ¿¬½ óδ»«½¡Ñ¡¿∩ Σπ¡¬µ¿¿ wait ¡Ñ íπñÑΓ ºáóÑαΦÑ¡ ¿ »«¬á ¡Ñ
  1499. íπñÑΓ πßΓá¡«ó½Ñ¡«, τΓ« π »α«µÑßßá í«½∞ΦÑ »«Γ«¼¬«ó ¡ÑΓ.  Æ«úñá  Σπ¡¬µ¿∩  wait
  1500. ó«ºóαáΘáÑΓ  º¡áτÑ¡¿Ñ, αáó¡«Ñ -1. Éạ¿µá ¼Ñªñπ ñóπ¼∩ ß»«ß«íἿ ºá»π߬ᠻα«ú-
  1501. αá¼¼δ ß«ßΓ«¿Γ ó Γ«¼, τΓ« ó »Ñαó«¼ ß½πτáÑ  »α«µÑßß-α«ñ¿Γѽ∞  ªñÑΓ  ºáóÑαΦÑ¡¿∩
  1502. ½εí«ú« ¿º »«Γ«¼¬«ó, ó Γ« óαѼ∩ ¬á¬ ó« óΓ«α«¼ ß½πτáÑ «¡ ªñÑΓ, »«¬á ºáóÑαΦáΓß∩
  1503. óßÑ Ñú« »«Γ«¼¬¿.
  1504.     é  αá¡¡¿σ  óÑαß¿∩σ ß¿ßΓѼδ UNIX Σπ¡¬µ¿¿ exit ¿ wait ¡Ñ ¿ß»«½∞º«ó὿ ¿ ¡Ñ
  1505. αáßß¼áΓα¿ó὿ ß¿ú¡á½ Γ¿»á "ú¿íѽ∞ »«Γ«¼¬á". é¼ÑßΓ« »«ß佬¿  ß¿ú¡á½á  Σπ¡¬µ¿∩
  1506. exit  ó«º«í¡«ó½∩½á óδ»«½¡Ñ¡¿Ñ α«ñ¿Γѽ∞߬«ú« »α«µÑßßá. àß½¿ α«ñ¿Γѽ∞߬¿⌐ »α«-
  1507. µÑßß »α¿ óδ»«½¡Ñ¡¿¿ Σπ¡¬µ¿¿ wait »α¿«ßΓá¡«ó¿½ß∩, «¡ ó«º«í¡«ó½∩ÑΓß∩,  ¡áσ«ñ¿Γ
  1508. »«Γ«¼¬á,  »αѬαáΓ¿óΦÑú«  ßπΘÑßΓó«óá¡¿Ñ, ¿ ó«ºóαáΘáÑΓ π»αáó½Ñ¡¿Ñ. é »α«Γ¿ó¡«¼
  1509. ß½πτáÑ ó«º«í¡«ó½Ñ¡¿∩ ¡Ñ »α«¿ßσ«ñ¿Γ; »α«µÑßß-α«ñ¿Γѽ∞  «í¡áαπª¿Γ  "»«ú¿íΦÑú«"
  1510. »«Γ«¼¬á  »α¿  ß½ÑñπεΘѼ «íαáΘÑ¡¿¿ ¬ Σπ¡¬µ¿¿ wait. Æ«τ¡« ΓᬠªÑ ¿ »α«µÑßß ¡á-
  1511. τá½∞¡«⌐ ºáúαπº¬¿ (init) ¼«ªÑΓ »α¿«ßΓá¡«ó¿Γ∞ß∩, ¿ß»«½∞ºπ∩ Σπ¡¬µ¿ε wait, ¿ ºá-
  1512. óÑαΦáεΘ¿Ñß∩ »« exit »α«µÑßßδ íπñπΓ ó«º«í¡«ó½∩Γ∞ Ñú«, Ñß½¿ «¡  ¿¼ÑÑΓ  πßδ¡«ó-
  1513. ½Ñ¡¡δσ »«Γ«¼¬«ó, »αѬαáΘáεΘ¿σ ßπΘÑßΓó«óá¡¿Ñ.
  1514.     é Γᬫ⌐ αÑ὿ºáµ¿¿ Σπ¡¬µ¿⌐ exit ¿ wait ¿¼ÑÑΓß∩ «ñ¡á ¡ÑαÑΦÑ¡¡á∩ »α«í½Ñ¼á,
  1515. ßó∩ºá¡¡á∩ ß ΓѼ, τΓ« »α«µÑßßδ, »αѬαáΓ¿óΦ¿Ñ ßπΘÑßΓó«óá¡¿Ñ, ¡Ñ½∞º∩ πí¿αáΓ∞ ¿º
  1516. ß¿ßΓÑ¼δ  ñ« ΓÑσ »«α, »«¬á ¿σ α«ñ¿Γѽ∞ ¡Ñ ¿ß»«½¡¿Γ Σπ¡¬µ¿ε wait. àß½¿ »α«µÑßß
  1517. ß«ºñá½ ¼¡«ªÑßΓó« »«Γ«¼¬«ó, ¡« Γᬠ¿ ¡Ñ ¿ß»«½¡¿½ Σπ¡¬µ¿ε wait, ¼«ªÑΓ »α«¿º«⌐-
  1518. Γ¿ »ÑαÑ»«½¡Ñ¡¿Ñ Γáí½¿µδ »α«µÑß߫󠿺-ºá ¡á½¿τ¿∩ »«Γ«¼¬«ó,  »αѬαáΓ¿óΦ¿σ  ßπ-
  1519. ΘÑßΓó«óá¡¿Ñ  ß  »«¼«Θ∞ε  Σπ¡¬µ¿¿  exit.  é ¬áτÑßΓóÑ »α¿¼Ñαá αáßß¼«Γα¿¼ ΓѬßΓ
  1520. »α«úαá¼¼δ »½á¡¿α«óΘ¿¬á »α«µÑßß«ó, »α¿óÑñÑ¡¡δ⌐ ¡á É¿ßπ¡¬Ñ 7.18. Åα«µÑßß  »α«-
  1521. ¿ºó«ñ¿Γ  ßτ¿Γδóá¡¿Ñ  ñá¡¡δσ  ¿º Σá⌐½á ßΓá¡ñáαΓ¡«ú« óó«ñá ñ« ΓÑσ »«α, »«¬á ¡Ñ
  1522. íπñÑΓ «í¡áαπªÑ¡ ¬«¡Ñµ Σá⌐½á, ß«ºñáóá∩ »α¿ ¬áªñ«¼ ¿ß»«½¡Ñ¡¿¿ Σπ¡¬µ¿¿ read ¡«-
  1523. ó«ú« »«Γ«¼¬á. Äñ¡á¬«, »α«µÑßß-α«ñ¿Γѽ∞ ¡Ñ ñ«ª¿ñáÑΓß∩ ºáóÑαΦÑ¡¿∩ ¬áªñ«ú«  »«-
  1524. Γ«¼¬á,  »«ß¬«½∞¬π  «¡  ßΓαѼ¿Γß∩  ºá»π߬áΓ∞ »α«µÑßßδ ¡á óδ»«½¡Ñ¡¿Ñ ¬á¬ ¼«ª¡«
  1525. íδßΓαÑÑ, ΓѼ í«½ÑÑ, τΓ« ¼«ªÑΓ »α«⌐Γ¿ ñ«ó«½∞¡« ¼¡«ú« óαѼѡ¿, »αѪñÑ τѼ »α«-
  1526. µÑßß-»«Γ«¼«¬ ºáóÑαΦ¿Γ ßó«Ñ óδ»«½¡Ñ¡¿Ñ. àß½¿, «íαáΓ¿óΦ¿ß∞ ¬
  1527.  
  1528.     ┌────────────────────────────────────────────────────────────┐
  1529.     │ #include <signal.h>                                        │
  1530.     │ main(argc,argv)                                            │
  1531.     │ {                                                          │
  1532.     │      char buf[256];                                        │
  1533.     │                                                            │
  1534.     │      if (argc != 1)                                        │
  1535.     │           signal(SIGCLD,SIG_IGN);   /* ¿ú¡«α¿α«óáΓ∞ ú¿íѽ∞ │
  1536.     │                                        »«Γ«¼¬«ó */         │
  1537.     │      while (read(0,buf,256))                               │
  1538.     │           if (fork() == 0)                                 │
  1539.     │           {                                                │
  1540.     │                /* ºñÑß∞ »α«µÑßß-»«Γ«¼«¬ «íδτ¡« óδ»«½¡∩ÑΓ   │
  1541.     │                   ¬á¬¿Ñ-Γ« «»Ñαᵿ¿ ¡áñ íπΣÑα«¼ (buf) */   │
  1542.     │                exit(0);                                    │
  1543.     │           }                                                │
  1544.     │ }                                                          │
  1545.     └────────────────────────────────────────────────────────────┘
  1546.  
  1547.     É¿ßπ¡«¬ 7.18.  Åα¿¼Ñα π¬áºá¡¿∩ »α¿τ¿¡δ »«∩ó½Ñ¡¿∩ ß¿ú¡á½á "ú¿-
  1548.                    íѽ∞ »«Γ«¼¬«ó"
  1549.  
  1550.  
  1551.                                     203
  1552.  
  1553. Σπ¡¬µ¿¿ signal, »α«µÑßß αáß»«α∩ñ¿½ß∩ ¿ú¡«α¿α«óáΓ∞ ß¿ú¡á½δ Γ¿»á  "ú¿íѽ∞  »«-
  1554. Γ«¼¬á",  ∩ñα« íπñÑΓ «τ¿ΘáΓ∞ ºá»¿ß¿, ß««ΓóÑΓßΓóπεΘ¿Ñ »αѬαáΓ¿óΦ¿¼ ßπΘÑßΓó«óá-
  1555. ¡¿Ñ »α«µÑßßá¼, áóΓ«¼áΓ¿τÑ߬¿. ê¡áτѠ󠬫¡Ñτ¡«¼ ¿Γ«úÑ ¿º-ºá  Γá¬¿σ  »α«µÑßß«ó
  1556. ¼«ªÑΓ »α«¿º«⌐Γ¿ »ÑαÑ»«½¡Ñ¡¿Ñ Γáí½¿µδ.
  1557.  
  1558.  
  1559.     E7.5 é¢çÄé äÉôâêò ÅÉÄâÉÇîîF
  1560.  
  1561.     æ¿ßΓѼ¡á∩  Σπ¡¬µ¿∩ exec ñáÑΓ ó«º¼«ª¡«ßΓ∞ »α«µÑßßπ ºá»π߬áΓ∞ ñαπúπε »α«ú-
  1562. αá¼¼π, »α¿ φΓ«¼ ß««ΓóÑΓßΓóπεΘ¿⌐ φΓ«⌐ »α«úαἼѠ¿ß»«½¡∩Ѽδ⌐ Σá⌐½ íπñÑΓ αáß»«-
  1563. ½áúáΓ∞ß∩ ó »α«ßΓαá¡ßΓóÑ »á¼∩Γ¿ »α«µÑßßá. æ«ñÑন¼«Ñ  »«½∞º«óáΓѽ∞߬«ú«  ¬«¡-
  1564. ΓѬßΓá »«ß½Ñ ó맮óá Σπ¡¬µ¿¿ ßΓá¡«ó¿Γß∩ ¡Ññ«ßΓπ»¡δ¼, ºá ¿ß¬½ετÑ¡¿Ñ¼ »ÑαÑñáóá-
  1565. Ѽδσ  Σπ¡¬µ¿¿  »áαá¼ÑΓα«ó, ¬«Γ«αδÑ »ÑαÑ»¿ßδóáεΓß∩ ∩ñα«¼ ¿º ßΓáα«ú« áñαÑß¡«ú«
  1566. »α«ßΓαá¡ßΓóá ó ¡«ó«Ñ. æ¿¡Γá¬ß¿ß ó맮óá Σπ¡¬µ¿¿:
  1567.  
  1568.     execve(filename,argv,envp)
  1569.  
  1570. úñÑ filename - ¿¼∩ ¿ß»«½¡∩Ѽ«ú« Σá⌐½á, argv - π¬áºáΓѽ∞ ¡á  ¼áß߿󠠻áαá¼ÑΓ-
  1571. α«ó,  ¬«Γ«αδÑ  »ÑαÑñáεΓß∩ óδºδóáѼ«⌐ »α«úαá¼¼Ñ, á envp - π¬áºáΓѽ∞ ¡á ¼áßß¿ó
  1572. »áαá¼ÑΓα«ó, ß«ßΓáó½∩εΘ¿σ ßαÑñπ óδ»«½¡Ñ¡¿∩ óδºδóáѼ«⌐ »α«úαá¼¼δ.  é맮ó  ß¿ß-
  1573. ΓѼ¡«⌐  Σπ¡¬µ¿¿  exec «ßπΘÑßΓó½∩εΓ ¡Ñ߬«½∞¬« í¿í½¿«ΓÑτ¡δσ Σπ¡¬µ¿⌐, Γᬿσ ¬á¬
  1574. execl, execv, execle ¿ Γ.ñ. é Γ«¼ ß½πτáÑ, ¬«úñá »α«úαἼᠠ¿ß»«½∞ºπÑΓ  »áαá-
  1575. ¼ÑΓαδ ¬«¼á¡ñ¡«⌐ ßΓ᫬¿
  1576.  
  1577.     main(argc,argv)  ,
  1578.  
  1579.     ┌────────────────────────────────────────────────────────────┐
  1580.     │ á½ú«α¿Γ¼ exec                                              │
  1581.     │ óσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩:  (1) ¿¼∩ Σá⌐½á                         │
  1582.     │                      (2) ß»¿ß«¬ »áαá¼ÑΓα«ó                 │
  1583.     │                      (3) ß»¿ß«¬ »ÑαѼѡ¡δσ ßαÑñδ           │
  1584.     │ óδσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩: «ΓßπΓßΓóπÑΓ                           │
  1585.     │ {                                                          │
  1586.     │    »«½πτ¿Γ∞ ¿¡ñѬߠΣá⌐½á (á½ú«α¿Γ¼ namei);                 │
  1587.     │    »α«óÑα¿Γ∞, ∩ó½∩ÑΓß∩ ½¿ Σá⌐½ ¿ß»«½¡¿¼δ¼ ¿ ¿¼ÑÑΓ ½¿ »«½∞- │
  1588.     │     º«óáΓѽ∞ »αáó« ¡á Ñú« ¿ß»«½¡Ñ¡¿Ñ;                      │
  1589.     │    »α«τ¿ΓáΓ∞ ¿¡Σ«α¼áµ¿ε ¿º ºáú«½«ó¬«ó Σá⌐½á ¿ »α«óÑα¿Γ∞,   │
  1590.     │     ∩ó½∩ÑΓß∩ ½¿ «¡ ºáúαπº«τ¡δ¼ ¼«ñπ½Ñ¼;                    │
  1591.     │    ß¬«»¿α«óáΓ∞ »áαá¼ÑΓαδ, »ÑαÑñá¡¡δÑ Σπ¡¬µ¿¿, ¿º ßΓáα«ú«   │
  1592.     │     áñαÑß¡«ú« »α«ßΓαá¡ßΓóá ó ß¿ßΓѼ¡«Ñ »α«ßΓαá¡ßΓó«;       │
  1593.     │    ñ½∩ (¬áªñ«⌐ «í½áßΓ¿, »α¿ß«Ññ¿¡Ñ¡¡«⌐ ¬ »α«µÑßßπ)         │
  1594.     │        «Γß«Ññ¿¡¿Γ∞ óßÑ ßΓáαδÑ «í½áßΓ¿ (á½ú«α¿Γ¼ detachreg);│
  1595.     │    ñ½∩ (¬áªñ«⌐ «í½áßΓ¿, «»αÑñѽѡ¡«⌐ ó ºáúαπº«τ¡«¼ ¼«ñπ½Ñ) │
  1596.     │    {                                                       │
  1597.     │        óδñѽ¿Γ∞ ¡«óδÑ «í½áßΓ¿ (á½ú«α¿Γ¼ allocreg);         │
  1598.     │        »α¿ß«Ññ¿¡¿Γ∞ «í½áßΓ¿ (á½ú«α¿Γ¼ attachreg);          │
  1599.     │        ºáúαπº¿Γ∞ «í½áßΓ∞ ó »á¼∩Γ∞ »« ú«Γ«ó¡«ßΓ¿ (á½ú«α¿Γ¼  │
  1600.     │         loadreg);                                          │
  1601.     │    }                                                       │
  1602.     │    ß¬«»¿α«óáΓ∞ »áαá¼ÑΓαδ, »ÑαÑñá¡¡δÑ Σπ¡¬µ¿¿, ó ¡«óπε «í-  │
  1603.     │     ½áßΓ∞ ßΓѬᠺáñáτ¿;                                    │
  1604.     │    ß»Ñµ¿á½∞¡á∩ «íαáí«Γ¬á ñ½∩ setuid-»α«úαá¼¼, Γαáßß¿α«ó¬á; │
  1605.     │    »α«¿¡¿µ¿á½¿º¿α«óáΓ∞ «í½áßΓ∞ ß«σαá¡Ñ¡¿∩ αÑú¿ßΓα«ó ºáñáτ¿ │
  1606.     │     (ó αἬáσ »«ñú«Γ«ó¬¿ ¬ ó«ºóαáΘÑ¡¿ε ó αѪ¿¼ ºáñáτ¿);    │
  1607.     │    «ßó«í«ñ¿Γ∞ ¿¡ñѬߠΣá⌐½á (á½ú«α¿Γ¼ iput);                │
  1608.     │ }                                                          │
  1609.     └────────────────────────────────────────────────────────────┘
  1610.  
  1611.                 É¿ßπ¡«¬ 7.19. Ç½ú«α¿Γ¼ Σπ¡¬µ¿¿ exec
  1612.  
  1613.                                     204
  1614.  
  1615. ¼áßß¿ó  argv  ∩ó½∩ÑΓß∩  ¬«»¿Ñ⌐ «ñ¡«¿¼Ñ¡¡«ú« »áαá¼ÑΓαá, »ÑαÑñáóáѼ«ú« Σπ¡¬µ¿¿
  1616. exec. æ¿¼ó«½∞¡δÑ ßΓ᫬¿, «»¿ßδóáεΘ¿Ñ ßαÑñπ óδ»«½¡Ñ¡¿∩ óδºδóáѼ«⌐  »α«úαá¼¼δ,
  1617. ¿¼ÑεΓ  ó¿ñ "¿¼∩=º¡áτÑ¡¿Ñ" ¿ ß«ñÑαªáΓ »«½Ñº¡πε ñ½∩ »α«úαá¼¼ ¿¡Σ«α¼áµ¿ε, Γá¬πε
  1618. ¬á¬ ¡áτá½∞¡δ⌐ ¬áΓὫú »«½∞º«óáΓѽ∩ ¿ »πΓ∞ »«¿ß¬á ¿ß»«½¡∩Ѽδσ »α«úαá¼¼.  Åα«-
  1619. µÑßßδ  ¼«úπΓ  «íαáΘáΓ∞ß∩  ¬  »áαá¼ÑΓαá¼ «»¿ßá¡¿∩ ßαÑñδ óδ»«½¡Ñ¡¿∩, ¿ß»«½∞ºπ∩
  1620. ú½«íá½∞¡πε »ÑαÑ-
  1621. ¼Ñ¡¡πε environ, ¬«Γ«απε ºáó«ñ¿Γ ¡áτá½∞¡á∩ »α«µÑñπαá æ¿-¿¡ΓÑα»αÑΓáΓ«αá.
  1622.     ìá É¿ßπ¡¬Ñ 7.19 »αÑñßΓáó½Ñ¡ á½ú«α¿Γ¼ óδ»«½¡Ñ¡¿∩ ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿  exec.
  1623. æ¡áτá½á Σπ¡¬µ¿∩ «íαáΘáÑΓß∩ ¬ Σá⌐½π »« á½ú«α¿Γ¼π namei, »α«óÑα∩∩, ∩ó½∩ÑΓß∩ ½¿
  1624. Σá⌐½ ¿ß»«½¡¿¼δ¼ ¿ «Γ½¿τ¡δ¼ «Γ ¬áΓὫúá, á ΓᬪѠ»α«óÑα∩∩ ¡á½¿τ¿Ñ π »«½∞º«óá-
  1625. Γѽ∩  »αáóá ¿ß»«½¡∩Γ∞ »α«úαá¼¼π. çáΓѼ ∩ñα«, ßτ¿Γδóá∩ ºáú«½«ó«¬ Σá⌐½á, «»αÑ-
  1626. ñѽ∩ÑΓ αẼÑΘÑ¡¿Ñ ¿¡Σ«α¼áµ¿¿ ó Σá⌐½Ñ (Σ«α¼áΓ Σá⌐½á).
  1627.     ìá É¿ßπ¡¬Ñ 7.20 ¿º«íαáªÑ¡ ½«ú¿τÑ߬¿⌐ Σ«α¼áΓ ¿ß»«½¡∩Ѽ«ú« Σá⌐½á ó  Σá⌐½«-
  1628. ó«⌐ ß¿ßΓѼÑ, «íδτ¡« úÑ¡Ñα¿απѼδ⌐ Γαá¡ß½∩Γ«α«¼ ¿½¿ ºáúαπºτ¿¬«¼. Ä¡ αáºí¿óáÑΓ-
  1629. ß∩ ¡á τÑΓδαÑ τáßΓ¿:
  1630.  1.  â½áó¡δ⌐ ºáú«½«ó«¬, ß«ñÑαªáΘ¿⌐ ¿¡Σ«α¼áµ¿ε « Γ«¼, ¡á ß¬«½∞¬« αáºñѽ«ó ñÑ-
  1631.     ½¿Γß∩ Σá⌐½, á ΓᬪѠ߫ñÑαªáΘ¿⌐ ¡áτá½∞¡δ⌐ áñαÑß ¿ß»«½¡Ñ¡¿∩ »α«µÑßßá ¿ ¡Ñ-
  1632.     ¬«Γ«α«Ñ "¼áú¿τÑ߬«Ñ τ¿ß½«", «»¿ßδóáεΘÑÑ Γ¿» ¿ß»«½¡∩Ѽ«ú« Σá⌐½á.
  1633.  2. çáú«½«ó¬¿ αáºñѽ«ó, ß«ñÑαªáΘ¿Ñ ¿¡Σ«α¼áµ¿ε, «»¿ßδóáεΘπε ¬áªñδ⌐  αáºñѽ  ó
  1634.     Σá⌐½Ñ: Ñú« αẼÑα, ó¿αΓπá½∞¡δÑ áñαÑßá, ó ¬«Γ«αδσ «¡ αáß»«½áúáÑΓß∩, ¿ ñα.
  1635.  3. Éáºñѽδ, ß«ñÑαªáΘ¿Ñ ß«íßΓóÑ¡¡« "ñá¡¡δÑ" Σá⌐½á (¡á»α¿¼Ñα, ΓѬßΓ«óδÑ), ¬«-
  1636.     Γ«αδÑ ºáúαπªáεΓß∩ ó áñαÑß¡«Ñ »α«ßΓαá¡ßΓó« »α«µÑßßá.
  1637.  4.  Éáºñѽδ, ß«ñÑαªáΘ¿Ñ ß¼ÑΦá¡¡πε ¿¡Σ«α¼áµ¿ε, Γá¬πε ¬á¬ Γáí½¿µδ ¿ñÑ¡Γ¿Σ¿¬á-
  1638.     Γ«α«ó ¿ ñαπú¿Ñ ñá¡¡δÑ, ¿ß»«½∞ºπѼδÑ ó »α«µÑßßÑ «Γ½áñ¬¿.
  1639.  
  1640.                               ┌───────────────────────────┐
  1641.                               │         Æ¿» Σá⌐½á         │
  1642.          â½áó¡δ⌐ ºáú«½«ó«¬    │    è«½¿τÑßΓó« αáºñѽ«ó    │
  1643.                               │ ìáτá½∞¡«Ñ ß«ßΓ«∩¡¿Ñ αÑú¿ß-│
  1644.                               │           Γα«ó            │
  1645.                               ├───────────────────────────┤
  1646.                               │        Æ¿» αáºñѽᠠ      │
  1647.        çáú«½«ó«¬ 1-ú« αáºñѽá │      ÉẼÑα αáºñѽᠠ     │
  1648.                               │     é¿αΓπá½∞¡δ⌐ áñαÑß     │
  1649.                               ├───────────────────────────┤
  1650.                               │        Æ¿» αáºñѽᠠ      │
  1651.        çáú«½«ó«¬ 2-ú« αáºñѽá │      ÉẼÑα αáºñѽᠠ     │
  1652.                  ∙            │     é¿αΓπá½∞¡δ⌐ áñαÑß     │
  1653.                  ∙            ├───────────────────────────┤
  1654.                  ∙            │            ∙              │
  1655.                  ∙            │            ∙              │
  1656.                  ∙            ├───────────────────────────┤
  1657.                  ∙            │        Æ¿» αáºñѽᠠ      │
  1658.        çáú«½«ó«¬ n-ú« αáºñѽá │      ÉẼÑα αáºñѽᠠ     │
  1659.                               │     é¿αΓπá½∞¡δ⌐ áñαÑß     │
  1660.                               ├───────────────────────────┤
  1661.               Éáºñѽ 1        │ äá¡¡δÑ (¡á»α¿¼Ñα, ΓѬßΓ)  │
  1662.                               ├───────────────────────────┤
  1663.               Éáºñѽ 2        │          äá¡¡δÑ           │
  1664.                  ∙            ├───────────────────────────┤
  1665.                  ∙            │            ∙              │
  1666.                  ∙            │            ∙              │
  1667.                  ∙            ├───────────────────────────┤
  1668.               Éáºñѽ n        │          äá¡¡δÑ           │
  1669.                               ├───────────────────────────┤
  1670.                               │     äαπúá∩ ¿¡Σ«α¼áµ¿∩     │
  1671.                               └───────────────────────────┘
  1672.  
  1673.              É¿ßπ¡«¬ 7.20. ÄíαẠ¿ß»«½¡∩Ѽ«ú« Σá⌐½á
  1674.  
  1675.                                     205
  1676.  
  1677.  
  1678.  
  1679.     ô¬áºá¡¡δÑ ß«ßΓáó½∩εΘ¿Ñ ß αáºó¿Γ¿Ñ¼ ßἫ⌐ ß¿ßΓѼδ ó¿ñ«¿º¼Ñ¡∩εΓß∩,  «ñ¡á¬«
  1680. ó«  óßÑσ ¿ß»«½¡∩Ѽδσ Σá⌐½áσ «í∩ºáΓѽ∞¡« »α¿ßπΓßΓóπÑΓ ú½áó¡δ⌐ ºáú«½«ó«¬ ß »«-
  1681. ½Ñ¼ Γ¿»á Σá⌐½á.
  1682.     Æ¿» Σá⌐½á «í«º¡áτáÑΓß∩ ¬«α«Γ¬¿¼ µÑ½δ¼ τ¿ß½«¼  (»αÑñßΓáó½∩ÑΓß∩  ó  ¼áΦ¿¡Ñ
  1683. »«½πß½«ó«¼),  ¬«Γ«α«Ñ  ¿ñÑ¡Γ¿Σ¿µ¿απÑΓ Σá⌐½ ¬á¬ ºáúαπº«τ¡δ⌐ ¼«ñπ½∞, ñáóá∩ ΓѼ
  1684. ßá¼δ¼ ∩ñαπ ó«º¼«ª¡«ßΓ∞ «Γ߽Ѫ¿óáΓ∞ ñ¿¡á¼¿τÑ߬¿Ñ σáαá¬ΓÑα¿ßΓ¿¬¿ Ñú«  óδ»«½¡Ñ-
  1685. ¡¿∩.  ìá»α¿¼Ñα,  ó  ¼áΦ¿¡Ñ PDP 11/70 «»αÑñѽѡ¿Ñ Γ¿»á Σá⌐½á ¬á¬ ºáúαπº«τ¡«ú«
  1686. ¼«ñπ½∩ ßó¿ñÑΓѽ∞ßΓóπÑΓ « Γ«¼, τΓ« »α«µÑßß, ¿ß»«½¡∩εΘ¿⌐ Σá⌐½, ¼«ªÑΓ ¿ß»«½∞º«-
  1687. óáΓ∞ ñ« 128 èíá⌐Γ »á¼∩Γ¿ ó¼ÑßΓ« 64 èíá⌐Γ (**), ΓѼ ¡Ñ ¼Ñ¡ÑÑ ó ß¿ßΓѼáσ ß ºá-
  1688. ¼ÑΘÑ¡¿Ñ¼ ßΓαá¡¿µ Γ¿» Σá⌐½á óßÑ ÑΘÑ ¿úαáÑΓ ßπΘÑßΓóÑ¡¡πε α«½∞, ó τѼ ¡á¼ »αÑñ-
  1689. ßΓ«¿Γ πíÑñ¿Γ∞ß∩ ó« óαѼ∩ º¡á¬«¼ßΓóá ß ú½áó«⌐ 9.
  1690.     éÑα¡Ñ¼ß∩  ¬ á½ú«α¿Γ¼π. îδ «ßΓᡫ󿽿ß∞ ¡á Γ«¼, τΓ« ∩ñα« «íαáΓ¿½«ß∞ ¬ ¿¡-
  1691. ñѬßπ Σá⌐½á ¿ πßΓᡫ󿽫, τΓ« Σá⌐½ ∩ó½∩ÑΓß∩ ¿ß»«½¡¿¼δ¼.  ƒñαπ  ß½Ññ«óὫ  íδ
  1692. «ßó«í«ñ¿Γ∞  »á¼∩Γ∞, ºá¡¿¼áѼπε »«½∞º«óáΓѽ∞߬¿¼ ¬«¡ΓѬßΓ«¼ »α«µÑßßá. Äñ¡á¬«,
  1693. »«ß¬«½∞¬π ó »á¼∩Γ¿, »«ñ½ÑªáΘÑ⌐ «ßó«í«ªñÑ¡¿ε, αáß»«½áúáεΓß∩ »ÑαÑñáóáѼδÑ  ¡«-
  1694. ó«⌐  »α«úαἼѠ »áαá¼ÑΓαδ, ∩ñα« »Ñαóδ¼ ñѽ«¼ ¬«»¿απÑΓ ¿σ ¿º áñαÑß¡«ú« »α«ßΓ-
  1695. αá¡ßΓóá ó »α«¼ÑªπΓ«τ¡δ⌐ íπΣÑα ¡á óαѼ∩, »«¬á ¡Ñ íπñπΓ «ΓóÑñÑ¡δ  «í½áßΓ¿  ñ½∩
  1696. ¡«ó«ú« »α«ßΓαá¡ßΓóá »á¼∩Γ¿.
  1697.     Å«ß¬«½∞¬π  »áαá¼ÑΓαἿ  Σπ¡¬µ¿¿  exec  óδßΓπ»áεΓ »«½∞º«óáΓѽ∞߬¿Ñ áñαÑßá
  1698. ¼áßß¿ó«ó ß¿¼ó«½∞¡δσ ßΓ᫬, ∩ñα« »« ¬áªñ«⌐ ßΓα«¬Ñ ß¡áτá½á ¬«»¿απÑΓ ó  ß¿ßΓѼ-
  1699. ¡πε  »á¼∩Γ∞  áñαÑß ßΓ᫬¿, á ºáΓѼ ßá¼π ßΓ᫬π. ä½∩ σαá¡Ñ¡¿∩ ßΓ᫬¿ ó αạδσ
  1700. óÑαß¿∩σ ß¿ßΓÑ¼δ ¼«úπΓ íδΓ∞ óδíαá¡δ αẽ¿τ¡δÑ  ¼ÑßΓá.  ùáΘÑ  »α¿¡∩Γ«  σαá¡¿Γ∞
  1701. ßΓ᫬¿ ó ßΓѬѠ∩ñαá (½«¬á½∞¡á∩ ßΓαπ¬Γπαá ñá¡¡δσ, »α¿¡áñ½ÑªáΘá∩ »α«úαἼѠ∩ñ-
  1702. αá), ¡á ¡Ñαáß»αÑñѽ∩Ѽδσ πτáßΓ¬áσ »á¼∩Γ¿ (Γᬿσ ¬á¬ ßΓαá¡¿µδ), ¬«Γ«αδÑ ¼«ª¡«
  1703. ºá¡¿¼áΓ∞  Γ«½∞¬«  óαѼѡ¡«, á ΓᬪѠó« ó¡ÑΦ¡Ñ⌐ »á¼∩Γ¿ (¡á πßΓα«⌐ßΓóÑ óδúαπº-
  1704. ¬¿).
  1705.     æ Γ«τ¬¿ ºαÑ¡¿∩ αÑ὿ºáµ¿¿ »α«ΘÑ óßÑú« ñ½∩ ¬«»¿α«óá¡¿∩ »áαá¼ÑΓα«ó ó ¡«óδ⌐
  1706. »«½∞º«óáΓѽ∞߬¿⌐ ¬«¡ΓѬßΓ «íαáΓ¿Γ∞ß∩ ¬ ßΓѬπ ∩ñαá. Äñ¡á¬«, »«ß¬«½∞¬π  αẼÑα
  1707. ßΓѬá ∩ñαá, ¬á¬ »αá󿽫, «úαá¡¿τ¿óáÑΓß∩ ß¿ßΓѼ«⌐, á ΓᬪѠ»«ß¬«½∞¬π »áαá¼ÑΓ-
  1708. αδ Σπ¡¬µ¿¿ exec ¼«úπΓ ¿¼ÑΓ∞ »α«¿ºó«½∞¡πε ñ½¿¡π, φë໫ñσ«ñ ß½ÑñπÑΓ ß«τÑΓáΓ∞
  1709. ß ñαπú¿¼¿ »«ñσ«ñἿ. Åα¿ αáßß¼«ΓαÑ¡¿¿ ñαπú¿σ óáα¿á¡Γ«ó «íδτ¡« «ßΓá¡áó½¿óáεΓ-
  1710. ß∩  ¡á  ß»«ß«íÑ  σαá¡Ñ¡¿∩, «íÑß»Ñτ¿óáεΘѼ ¡á¿í«½ÑÑ íδßΓαδ⌐ ñ«ßΓπ» ¬ ßΓ᫬á¼.
  1711. àß½¿ ñ«ßΓπ» ¬ ßΓαá¡¿µá¼ »á¼∩Γ¿ ó ß¿ßΓѼѠαÑ὿ºπÑΓß∩ ñ«ó«½∞¡« »α«ßΓ«, ßΓ᫬¿
  1712. ß½ÑñπÑΓ αẼÑΘáΓ∞ ¡á ßΓαá¡¿µáσ, »«ß¬«½∞¬π  «íαáΘÑ¡¿Ñ  ¬  «»ÑαáΓ¿ó¡«⌐  »á¼∩Γ¿
  1713. «ßπΘÑßΓó½∩ÑΓß∩ íδßΓαÑÑ, τѼ ¬ ó¡ÑΦ¡Ñ⌐ (πßΓα«⌐ßΓóπ óδúαπº¬¿).
  1714.     Å«ß½Ñ ¬«»¿α«óá¡¿∩ »áαá¼ÑΓα«ó Σπ¡¬µ¿¿ exec ó ß¿ßΓѼ¡πε »á¼∩Γ∞ ∩ñα« «Γß«Ñ-
  1715. ñ¿¡∩ÑΓ   «í½áßΓ¿,   αá¡ÑÑ  »α¿ß«Ññ¿¡Ñ¡¡δÑ  ¬  »α«µÑßßπ,  ¿ß»«½∞ºπ∩  á½ú«α¿Γ¼
  1716. detachreg. ìÑ߬«½∞¬« »«ºªÑ ¼δ ÑΘÑ »«ú«ó«α¿¼ « ß»Ñµ¿á½∞¡δσ ñÑ⌐ßΓó¿∩σ,  óδ»«½-
  1717. ¡∩Ѽδσ  ó  «Γ¡«ΦÑ¡¿¿ «í½áßΓÑ⌐ ¬«¼á¡ñ. è αáßß¼áΓα¿óáѼ«¼π ¼«¼Ñ¡Γπ »α«µÑßß πªÑ
  1718. ½¿ΦÑ¡ »«½∞º«óáΓѽ∞߬«ú« ¬«¡ΓѬßΓá ¿ »«φΓ«¼π ó«º¡¿¬¡«óÑ¡¿Ñ ó ñá½∞¡Ñ⌐ΦѼ ½εí«⌐
  1719. «Φ¿í¬¿ ¡Ñ¿ºíѪ¡« íπñÑΓ »α¿ó«ñ¿Γ∞ ¬ ºáóÑαΦÑ¡¿ε »α«µÑßßá  »«  ß¿ú¡á½π.  Æá¬¿¼¿
  1720. «Φ¿í¬á¼¿ ¼«úπΓ íδΓ∞ «íαáΘÑ¡¿Ñ ¬ »α«ßΓαá¡ßΓóπ, ¡Ñ «»¿ßá¡¡«¼π ó Γáí½¿µÑ «í½áß-
  1721. ΓÑ⌐  ∩ñαá,  »«»δΓ¬á  ºáúαπº¿Γ∞ »α«úαá¼¼π, ¿¼ÑεΘπε ¡Ññ«»πßΓ¿¼« í«½∞Φ«⌐ αẼÑα
  1722. ¿½¿ ¿ß»«½∞ºπεΘπε «í½áßΓ¿ ß »ÑαÑßѬáεΘ¿¼¿ß∩ áñαÑßἿ, ¿ ñα. ƒñα«  óδñѽ∩ÑΓ  ¿
  1723. »α¿ß«Ññ¿¡∩ÑΓ ¬ »α«µÑßßπ «í½áßΓ¿ ¬«¼á¡ñ ¿ ñá¡¡δσ, ºáúαπªáÑΓ ó «»ÑαáΓ¿ó¡πε »á-
  1724. ¼∩Γ∞ ß«ñÑন¼«Ñ ¿ß»«½¡∩Ѽ«ú« Σá⌐½á (á½ú«α¿Γ¼δ allocreg, attachreg ¿ loadreg,
  1725. ß««ΓóÑΓßΓóÑ¡¡«).  Äí½áßΓ∞  ñá¡¡δσ »α«µÑßßá ¿º¡áτá½∞¡« »«ñѽѡᠡá ñóÑ τáßΓ¿:
  1726.  
  1727.  
  1728. ───────────────────────────────────────
  1729. (**) é PDP 11 "¼áú¿τÑ߬¿Ñ τ¿ß½á" ¿¼ÑεΓ  º¡áτÑ¡¿∩,  ß««ΓóÑΓßΓóπεΘ¿Ñ  ¬«¼á¡ñá¼
  1730.      »ÑαÑσ«ñá;  »α¿ óδ»«½¡Ñ¡¿¿ φΓ¿σ ¬«¼á¡ñ ó αá¡¡¿σ óÑαß¿∩σ ß¿ßΓѼδ π»αáó½Ñ-
  1731.      ¡¿Ñ »ÑαÑñáóὫß∞ ó αạδÑ ¼ÑßΓá »α«úαá¼¼δ ó ºáó¿ß¿¼«ßΓ¿ «Γ αẼÑαá  ºá-
  1732.      ú«½«ó¬á ¿ «Γ Γ¿»á ¿ß»«½¡∩Ѽ«ú« Σá⌐½á. ¥Γá «ß«íÑ¡¡«ßΓ∞ í«½∞ΦÑ ¡Ñ ¿ß»«½∞-
  1733.      ºπÑΓß∩ ß ΓÑσ »«α, ¬á¬ ß¿ßΓѼá ßΓá½á αáºαáíáΓδóáΓ∞ß∩ ¡á ∩ºδ¬Ñ æ¿.
  1734.  
  1735.  
  1736.  
  1737.                                     206
  1738.  
  1739. ñá¡¡δÑ, ¿¡¿µ¿á½¿ºáµ¿∩ ¬«Γ«αδσ íδ½á óδ»«½¡Ñ¡á ó« óαѼ∩ ¬«¼»¿½∩µ¿¿, ¿  ñá¡¡δÑ,
  1740. ¡Ñ «»αÑñѽѡ¡δÑ ¬«¼»¿½∩Γ«α«¼ ("bss"). Äí½áßΓ∞ »á¼∩Γ¿ »Ñαó«¡áτá½∞¡« óδñѽ∩ÑΓ-
  1741. ß∩  ñ½∩  »α«¿¡¿µ¿á½¿º¿α«óá¡¡δσ ñá¡¡δσ. çáΓѼ ∩ñα« πóѽ¿τ¿óáÑΓ αẼÑα «í½áßΓ¿
  1742. ñá¡¡δσ ñ½∩ αẼÑΘÑ¡¿∩ ñá¡¡δσ Γ¿»á "bss" (á½ú«α¿Γ¼  growreg)  ¿  «í¡π½∩ÑΓ  ¿σ
  1743. º¡áτÑ¡¿∩. ìừ߽Ññ«¬ ∩ñα« óδñѽ∩ÑΓ ¿ »α¿ß«Ññ¿¡∩ÑΓ ¬ »α«µÑßßπ «í½áßΓ∞ ßΓѬᠿ
  1744. «Γó«ñ¿Γ »α«ßΓαá¡ßΓó« »á¼∩Γ¿ ñ½∩ σαá¡Ñ¡¿∩ »áαá¼ÑΓα«ó Σπ¡¬µ¿¿ exec. àß½¿ »áαá-
  1745. ¼ÑΓαδ  Σπ¡¬µ¿¿ αẼÑΘáεΓß∩ ¡á ßΓαá¡¿µáσ, ΓÑ ªÑ ßΓαá¡¿µδ ¼«úπΓ íδΓ∞ ¿ß»«½∞º«-
  1746. óá¡δ »«ñ ßΓѬ. é »α«Γ¿ó¡«¼ ß½πτáÑ »áαá¼ÑΓαδ Σπ¡¬µ¿¿ αẼÑΘáεΓß∩ ó ßΓѬѠ ºá-
  1747. ñáτ¿.
  1748.     é »α«ßΓαá¡ßΓóÑ »α«µÑßßá ∩ñα« ßΓ¿αáÑΓ áñαÑßá »«½∞º«óáΓѽ∞߬¿σ Σπ¡¬µ¿⌐ «í-
  1749. αáí«Γ¬¿  ß¿ú¡á½«ó,  »«ß¬«½∞¬π  ó ¡«ó«¼ »«½∞º«óáΓѽ∞߬«¼ ¬«¡ΓѬßΓÑ «¡¿ ΓÑα∩εΓ
  1750. ßó«Ñ º¡áτÑ¡¿Ñ. Äñ¡á¬« ¿ ó ¡«ó«¼ ¬«¡ΓѬßΓÑ αѬ«¼Ñ¡ñᵿ¿ »« ¿ú¡«α¿α«óá¡¿ε  ΓÑσ
  1751. ¿½¿ ¿¡δσ ß¿ú¡á½«ó «ßΓáεΓß∩ ó ß¿½Ñ. ƒñα« πßΓá¡áó½¿óáÑΓ ó αÑú¿ßΓαáσ ñ½∩ αѪ¿¼á
  1752. ºáñáτ¿ º¡áτÑ¡¿∩ ¿º ß«σαá¡Ñ¡¡«ú« αÑú¿ßΓα«ó«ú« ¬«¡ΓѬßΓá, ó τáßΓ¡«ßΓ¿ »Ñαó«¡á-
  1753. τá½∞¡«Ñ º¡áτÑ¡¿Ñ π¬áºáΓѽ∩ óÑαΦ¿¡δ ßΓѬá (sp) ¿ ßτÑΓτ¿¬á ¬«¼á¡ñ (pc): »Ñαó«-
  1754. ¡áτá½∞¡«Ñ  º¡áτÑ¡¿Ñ  ßτÑΓτ¿¬á  ¬«¼á¡ñ  í佫 ºá¡ÑßÑ¡« ºáúαπºτ¿¬«¼ ó ºáú«½«ó«¬
  1755. Σá⌐½á. ä½∩ setuid-»α«úαá¼¼ ¿ ñ½∩  Γαáßß¿α«ó¬¿  »α«µÑßßá  ∩ñα«  »αÑñ»α¿¡¿¼áÑΓ
  1756. «ß«íδÑ  ñÑ⌐ßΓó¿∩, ¡á ¬«Γ«αδσ ¼δ ÑΘÑ «ßΓá¡«ó¿¼ß∩ ó« óαѼ∩ αáßß¼«ΓαÑ¡¿∩ ú½áó 8
  1757. ¿ 11, ß««ΓóÑΓßΓóÑ¡¡«. ìᬫ¡Ñµ, ∩ñα« ºá»π߬áÑΓ á½ú«α¿Γ¼ iput, «ßó«í«ªñá∩  ¿¡-
  1758. ñѬß,  óδñѽѡ¡δ⌐ »« á½ú«α¿Γ¼π namei ó ßἫ¼ ¡áτá½Ñ óδ»«½¡Ñ¡¿∩ Σπ¡¬µ¿¿ exec.
  1759. ǽú«α¿Γ¼δ namei ¿ iput ó Σπ¡¬µ¿¿ exec óδ»«½¡∩εΓ α«½∞, »«ñ«í¡πε Γ«⌐,  ¬«Γ«απε
  1760. «¡¿ óδ»«½¡∩εΓ »α¿ «Γ¬αδΓ¿¿ ¿ ºá¬αδΓ¿¿ Σá⌐½á; ß«ßΓ«∩¡¿Ñ Σá⌐½á ó« óαѼ∩ óδ»«½-
  1761. ¡Ñ¡¿∩ Σπ¡¬µ¿¿ exec »«σ«ªÑ ¡á ß«ßΓ«∩¡¿Ñ «Γ¬αδΓ«ú« Σá⌐½á, Ñß½¿ ¡Ñ »α¿¡¿¼áΓ∞ ó«
  1762. 󡿼᡿Ѡ «ΓßπΓßΓó¿Ñ  ºá»¿ß¿  « Σá⌐½Ñ ó Γáí½¿µÑ Σá⌐½«ó. Å« óδσ«ñÑ ¿º Σπ¡¬µ¿¿
  1763. »α«µÑßß ¿ß»«½¡∩ÑΓ ΓѬßΓ ¡«ó«⌐ »α«úαá¼¼δ. ÆÑ¼ ¡Ñ ¼Ñ¡ÑÑ, »α«µÑßß «ßΓáÑΓß∩  ΓѼ
  1764. ªÑ,  τΓ« ¿ ñ« óδ»«½¡Ñ¡¿∩ Σπ¡¬µ¿¿; Ñú« ¿ñÑ¡Γ¿Σ¿¬áΓ«α ¡Ñ ¿º¼Ñ¡¿½ß∩, ¬á¬ ¡Ñ ¿º-
  1765. ¼Ñ¡¿½«ß∞ ¿ Ñú« ¼ÑßΓ« ó ¿Ñαáασ¿¿ »α«µÑßß«ó. êº¼Ñ¡Ñ¡¿ε »«ñóÑαúß∩ Γ«½∞¬«  »«½∞-
  1766. º«óáΓѽ∞߬¿⌐ ¬«¡ΓѬßΓ »α«µÑßßá.
  1767.  
  1768.     ┌───────────────────────────────────────────────────────┐
  1769.     │ main()                                                │
  1770.     │ {                                                     │
  1771.     │     int status;                                       │
  1772.     │     if (fork() == 0)                                  │
  1773.     │         execl("/bin/date","date",0);                  │
  1774.     │     wait(&status);                                    │
  1775.     │ }                                                     │
  1776.     └───────────────────────────────────────────────────────┘
  1777.  
  1778.         É¿ßπ¡«¬ 7.21. Åα¿¼Ñα ¿ß»«½∞º«óá¡¿∩ Σπ¡¬µ¿¿ exec
  1779.  
  1780.  
  1781.     é  ¬áτÑßΓóÑ  »α¿¼Ñαá  ¼«ª¡« »α¿óÑßΓ¿ »α«úαá¼¼π (É¿ßπ¡«¬ 7.21), ó ¬«Γ«α«⌐
  1782. ß«ºñáÑΓß∩ »α«µÑßß-»«Γ«¼«¬, ºá»π߬áεΘ¿⌐ Σπ¡¬µ¿ε  exec.  æαáºπ  »«  ºáóÑαΦÑ¡¿¿
  1783. Σπ¡¬µ¿¿ fork »α«µÑßß-α«ñ¿Γѽ∞ ¿ »α«µÑßß-»«Γ«¼«¬ ¡áτ¿¡áεΓ ¿ß»«½¡∩Γ∞ ¡Ñºáó¿ß¿-
  1784. ¼«  ñαπú  «Γ  ñαπúá ¬«»¿¿ «ñ¡«⌐ ¿ Γ«⌐ ªÑ »α«úαá¼¼δ. è ¼«¼Ñ¡Γπ ó맮óá »α«µÑß-
  1785. ß«¼-»«Γ«¼¬«¼ Σπ¡¬µ¿¿ exec ó Ñú« «í½áßΓ¿  ¬«¼á¡ñ  ¡áσ«ñ∩Γß∩  ¿¡ßΓαπ¬µ¿¿  φΓ«⌐
  1786. »α«úαá¼¼δ,  ó  «í½áßΓ¿ ñá¡¡δσ αáß»«½áúáεΓß∩ ßΓ᫬¿ "/bin/date" ¿ "date", á ó
  1787. ßΓѬѠ- ºá»¿ß¿, ¬«Γ«αδÑ íπñπΓ ¿ºó½ÑτÑ¡δ »« óδσ«ñÑ ¿º exec.  ƒñα«  ¿ΘÑΓ  Σá⌐½
  1788. "/bin/date"  ó Σá⌐½«ó«⌐ ß¿ßΓѼÑ, «í¡áαπª¿ó Ñú«, πº¡áÑΓ, τΓ« Ñú« ¼«ªÑΓ ¿ß»«½-
  1789. ¡¿Γ∞ ½εí«⌐ »«½∞º«óáΓѽ∞, á Γá¬ªÑ Γ«, τΓ« «¡ »αÑñßΓáó½∩ÑΓ  ß«í«⌐  ºáúαπº«τ¡δ⌐
  1790. ¼«ñπ½∞,  ú«Γ«óδ⌐  ñ½∩ ¿ß»«½¡Ñ¡¿∩. Å« πß½«ó¿ε »Ñαóδ¼ »áαá¼ÑΓα«¼ Σπ¡¬µ¿¿ exec,
  1791. ó¬½ετáÑ¼δ¼ ó ß»¿ß«¬ »áαá¼ÑΓα«ó argv, ∩ó½∩ÑΓß∩ ¿¼∩ ¿ß»«½¡∩Ѽ«ú«  Σá⌐½á  (»«ß-
  1792. ½Ññ¡∩∩  ¬«¼»«¡Ñ¡Γá  ¿¼Ñ¡¿  »πΓ¿  »«¿ß¬á Σá⌐½á). Æá¬¿¼ «íαẫ¼, »α«µÑßß ¿¼ÑÑΓ
  1793. ñ«ßΓπ» ¬ ¿¼Ñ¡¿ »α«úαá¼¼δ ¡á »«½∞º«óáΓѽ∞߬«¼ πα«ó¡Ñ, τΓ« ¿¡«úñá  ¼«ªÑΓ  «¬á-
  1794. ºáΓ∞ß∩  »«½Ñº¡δ¼  (***).  çáΓѼ ∩ñα« ¬«»¿απÑΓ ßΓ᫬¿ "/bin/date" ¿ "date" ó«
  1795. ó¡πΓαÑ¡¡εε ßΓαπ¬Γπαπ σαá¡Ñ¡¿∩ ¿ «ßó«í«ªñáÑΓ «í½áßΓ¿ ¬«¼á¡ñ, ñá¡¡δσ ¿  ßΓѬá,
  1796. ºá¡¿¼áѼδÑ  »α«µÑßß«¼.  Åα«µÑßßπ  óδñѽ∩εΓß∩  ¡«óδÑ «í½áßΓ¿ ¬«¼á¡ñ, ñá¡¡δσ ¿
  1797. ßΓѬá, ó «í½áßΓ∞ ¬«¼á¡ñ »ÑαÑ»¿ßδóáÑΓß∩ ¬«¼á¡ñ¡á∩ ßѬµ¿∩ Σá⌐½á "/bin/date", ó
  1798.  
  1799.                                    207
  1800.  
  1801. ───────────────────────────────────────
  1802. (***)  ìá»α¿¼Ñα, ó óÑαß¿¿ V ßΓá¡ñáαΓ¡δÑ »α«úαá¼¼δ »ÑαÑ¿¼Ñ¡«óá¡¿∩ Σá⌐½á (mv),
  1803.       ¬«»¿α«óá¡¿∩ Σá⌐½á (cp) ¿ ¬«¼»«¡«ó¬¿ Σá⌐½á  (ln),  »«ß¬«½∞¬π  ¿ß»«½¡∩εΓ
  1804.       »«σ«ª¿Ñ  ñÑ⌐ßΓó¿∩,  óδºδóáεΓ  «ñ¿¡ ¿ Γ«Γ ªÑ ¿ß»«½¡∩Ѽδ⌐ Σá⌐½. Å« ¿¼Ñ¡¿
  1805.       óδºδóáѼ«⌐ »α«úαá¼¼δ »α«µÑßß πº¡áÑΓ, ¬á¬¿Ñ ñÑ⌐ßΓó¿∩ ó ¡áßΓ«∩Θ¿⌐ ¼«¼Ñ¡Γ
  1806.       ΓαÑíπεΓß∩ »«½∞º«óáΓѽε.
  1807.  
  1808. «í½áßΓ∞ ñá¡¡δσ - ßѬµ¿∩ ñá¡¡δσ Σá⌐½á.  ƒñα«  ó«ßßΓá¡áó½¿óáÑΓ  »Ñαó«¡áτá½∞¡δ⌐
  1809. ß»¿ß«¬  »áαá¼ÑΓα«ó  (ó  ñá¡¡«¼ ß½πτáÑ φΓ« ßΓ᫬á ß¿¼ó«½«ó "date") ¿ »«¼ÑΘáÑΓ
  1810. Ñú« ó «í½áßΓ∞ ßΓѬá. éδºóáó Σπ¡¬µ¿ε exec, »α«µÑßß-»«Γ«¼«¬ »αѬαáΘáÑΓ  óδ»«½-
  1811. ¡Ñ¡¿Ñ ßΓáα«⌐ »α«úαá¼¼δ ¿ »ÑαÑσ«ñ¿Γ ¬ óδ»«½¡Ñ¡¿ε »α«úαá¼¼δ
  1812.  
  1813. "date"; ¬«úñá »α«úαá¼¼á "date" ºáóÑαΦ¿Γß∩, »α«µÑßß-α«ñ¿Γѽ∞, «ª¿ñáεΘ¿⌐ φΓ«ú«
  1814. ¼«¼Ñ¡Γá, »«½πτ¿Γ ¬«ñ ºáóÑαΦÑ¡¿∩ Σπ¡¬µ¿¿ exit.
  1815.     é»½«Γ∞ ñ« ¡áßΓ«∩ΘÑú« ¼«¼Ñ¡Γá ¼δ »αÑñ»«½áú὿, τΓ« ¬«¼á¡ñδ ¿ ñá¡¡δÑ  αáº-
  1816. ¼ÑΘáεΓß∩  ó  αạδσ ßѬµ¿∩σ ¿ß»«½¡∩Ѽ«⌐ »α«úαá¼¼δ ¿, ß½Ññ«óáΓѽ∞¡«, ó αạδσ
  1817. «í½áßΓ∩σ ΓѬπΘÑú« »α«µÑßßá. Æá¬«Ñ αẼÑΘÑ¡¿Ñ ¿¼ÑÑΓ ñóá «ß¡«ó¡δσ  »αÑ¿¼πΘÑßΓ-
  1818. óá:  »α«ßΓ«Γá  «αúá¡¿ºáµ¿¿  ºáΘ¿Γδ «Γ ¡Ñßᡬµ¿«¡¿α«óá¡¡«ú« ñ«ßΓπ»á ¿ ó«º¼«ª-
  1819. ¡«ßΓ∞ αáºñѽѡ¿∩ «í½áßΓÑ⌐ αẽ¿τ¡δ¼¿ »α«µÑßßἿ. àß½¿ íδ  ¬«¼á¡ñδ  ¿  ñá¡¡δÑ
  1820. ¡áσ«ñ¿½¿ß∞ ó «ñ¡«⌐ «í½áßΓ¿, ß¿ßΓѼᠡѠ߼«ú½á íδ »αÑñ«ΓóαáΓ¿Γ∞ ºáΓ¿αá¡¿Ñ ¬«-
  1821. ¼á¡ñ, »«ß¬«½∞¬π Ñ⌐ ¡Ñ í뫨 íδ ¿ºóÑßΓ¡δ áñαÑßá, »« ¬«Γ«αδ¼ «¡¿ αáß»«½áúáεΓß∩.
  1822. àß½¿  ªÑ ¬«¼á¡ñδ ¿ ñá¡¡δÑ ¡áσ«ñ∩Γß∩ ó αạδσ «í½áßΓ∩σ, ß¿ßΓѼᠿ¼ÑÑΓ ó«º¼«ª-
  1823. ¡«ßΓ∞ »«½∞º«óáΓ∞ß∩ ¼Ñσá¡¿º¼á¼¿ á»»áαáΓ¡«⌐ ºáΘ¿Γδ  «í½áßΓ¿  ¬«¼á¡ñ  »α«µÑßßá.
  1824. è«úñá  »α«µÑßß ß½πτá⌐¡« »«»δΓáÑΓß∩ τΓ«-Γ« ºá»¿ßáΓ∞ ó «í½áßΓ∞, ºá¡∩Γπε ¬«¼á¡-
  1825. ñἿ, «¡ »«½πτ¿Γ «Γ¬áº, »«α«ªñÑ¡¡δ⌐ ß¿ßΓѼ«⌐ ºáΘ¿Γδ ¿  »α¿ó«ñ∩Θ¿⌐  «íδτ¡«  ¬
  1826. áóáα¿⌐¡«¼π ºáóÑαΦÑ¡¿ε »α«µÑßßá.
  1827.  
  1828.     ┌────────────────────────────────────────────────────────────┐
  1829.     │ #include <signal.h>                                        │
  1830.     │ main()                                                     │
  1831.     │ {                                                          │
  1832.     │    int i,*ip;                                              │
  1833.     │    extern f(),sigcatch();                                  │
  1834.     │                                                            │
  1835.     │    ip = (int *)f;  /* »α¿ßó«Ñ¡¿Ñ »ÑαѼѡ¡«⌐ ip º¡áτÑ¡¿∩ áñ-│
  1836.     │                       αÑßá Σπ¡¬µ¿¿ f */                    │
  1837.     │    for (i = 0; i < 20; i++)                                │
  1838.     │         signal(i,sigcatch);                                │
  1839.     │    *ip = 1;        /* »«»δΓ¬á ºáΓÑαÑΓ∞ áñαÑß Σπ¡¬µ¿¿ f */  │
  1840.     │    printf("»«ß½Ñ »α¿ßó«Ñ¡¿∩ º¡áτÑ¡¿∩ ip\n");               │
  1841.     │    f();                                                    │
  1842.     │ }                                                          │
  1843.     │                                                            │
  1844.     │ f()                                                        │
  1845.     │ {                                                          │
  1846.     │ }                                                          │
  1847.     │                                                            │
  1848.     │ sigcatch(n)                                                │
  1849.     │    int n;                                                  │
  1850.     │ {                                                          │
  1851.     │    printf("»α¿¡∩Γ ß¿ú¡á½ %d\n",n);                         │
  1852.     │    exit(1);                                                │
  1853.     │ }                                                          │
  1854.     └────────────────────────────────────────────────────────────┘
  1855.  
  1856.     É¿ßπ¡«¬ 7.22. Åα¿¼Ñα »α«úαá¼¼δ, óÑñπΘÑ⌐ ºá»¿ß∞ ó «í½áßΓ∞ ¬«¼á¡ñ
  1857.  
  1858.     é  ¬áτÑßΓóÑ  »α¿¼Ñαá  ¼«ª¡«  »α¿óÑßΓ¿  »α«úαá¼¼π (É¿ßπ¡«¬ 7.22), ¬«Γ«αá∩
  1859. »α¿ßóá¿óáÑΓ »ÑαѼѡ¡«⌐ ip º¡áτÑ¡¿Ñ áñαÑßá Σπ¡¬µ¿¿ f ¿ ºáΓѼ ñѽáÑΓ  αáß»«α∩-
  1860.  
  1861.                                     208
  1862.  
  1863. ªÑ¡¿Ñ  »α¿¡¿¼áΓ∞ óßÑ ß¿ú¡á½δ. àß½¿ »α«úαá¼¼á ß¬«¼»¿½¿α«óá¡á Γá¬, τΓ« ¬«¼á¡ñδ
  1864. ¿ ñá¡¡δÑ αáß»«½áúáεΓß∩ ó αạδσ «í½áßΓ∩σ,  »α«µÑßß,  ¿ß»«½¡∩εΘ¿⌐  »α«úαá¼¼π,
  1865. »α¿ »«»δΓ¬Ñ ºá»¿ßáΓ∞ τΓ«-Γ« »« áñαÑßπ ó ip óßΓαÑΓ¿Γ »«α«ªñÑ¡¡δ⌐ ß¿ßΓѼ«⌐ ºá-
  1866. Θ¿Γδ  «Γ¬áº,  »«ß¬«½∞¬π  «í½áßΓ∞  ¬«¼á¡ñ  ºáΘ¿Θѡᠠ«Γ ºá»¿ß¿. Åα¿ αáí«ΓÑ ¡á
  1867. ¬«¼»∞εΓÑαÑ AT&T 3B20 ∩ñα« »«ßδ½áÑΓ »α«µÑßßπ ß¿ú¡á½ SIGBUS, ó ñαπú¿σ ß¿ßΓѼáσ
  1868. 󫺼«ª¡á »«ß佬á ñαπú¿σ ß¿ú¡á½«ó. Åα«µÑßß »α¿¡¿¼áÑΓ ß¿ú¡á½ ¿ ºáóÑαΦáÑΓß∩, ¡Ñ
  1869. ñ«⌐ñ∩ ñ« óδ»«½¡Ñ¡¿∩ ¬«¼á¡ñδ óδó«ñá ¡á »ÑτáΓ∞ ó »α«µÑñπαÑ main. Äñ¡á¬«,  Ñß½¿
  1870. »α«úαá¼¼á ß¬«¼»¿½¿α«óá¡á Γá¬, τΓ« ¬«¼á¡ñδ ¿ ñá¡¡δÑ αáß»«½áúáεΓß∩ ó «ñ¡«⌐ «í-
  1871. ½áßΓ¿  (ó «í½áßΓ¿ ñá¡¡δσ), ∩ñα« ¡Ñ »«⌐¼ÑΓ, τΓ« »α«µÑßß »δΓáÑΓß∩ ºáΓÑαÑΓ∞ áñ-
  1872. αÑß Σπ¡¬µ¿¿ f. ÇñαÑß f ßΓá¡ÑΓ αáó¡δ¼ 1. Åα«µÑßß ¿ß»«½¡¿Γ ¬«¼á¡ñπ  óδó«ñá  ¡á
  1873. »ÑτáΓ∞  ó  »α«µÑñπαÑ  main,  ¡« ¬«úñá ºá»πßΓ¿Γ Σπ¡¬µ¿ε f, »α«¿º«⌐ñÑΓ «Φ¿í¬á,
  1874. ßó∩ºá¡¡á∩ ß »«»δΓ¬«⌐ óδ»«½¡Ñ¡¿∩ ºá»αÑΘÑ¡¡«⌐ ¬«¼á¡ñδ.  ƒñα«  »«Φ½ÑΓ  »α«µÑßßπ
  1875. ß¿ú¡á½ SIGILL ¿ »α«µÑßß ºáóÑαΦ¿Γß∩.
  1876.     Éáß»«½«ªÑ¡¿Ñ ¬«¼á¡ñ ¿ ñá¡¡δσ ó αạδσ «í½áßΓ∩σ «í½ÑúτáÑΓ »«¿ß¬ ¿ »αÑñ«Γ-
  1877. óαáΘÑ¡¿Ñ  «Φ¿í«¬  áñαÑßᵿ¿. ÆÑ¼ ¡Ñ ¼Ñ¡ÑÑ, ó αá¡¡¿σ óÑαß¿∩σ ß¿ßΓѼδ UNIX ¬«-
  1878. ¼á¡ñδ ¿ ñá¡¡δÑ αáºαÑΦὫß∞ αáß»«½áúáΓ∞ ó «ñ¡«⌐ «í½áßΓ¿, »«ß¬«½∞¬π ¡á ¼áΦ¿¡áσ
  1879. PDP αẼÑα »α«µÑßßá íδ½ ß¿½∞¡« «úαá¡¿τÑ¡: »α«úαá¼¼δ ¿¼Ñ½¿ ¼Ñ¡∞Φ¿⌐  αẼÑα  ¿
  1880. ßπΘÑßΓóÑ¡¡« ¼Ñ¡∞Φπε ßÑú¼Ñ¡Γᵿε, Ñß½¿ ¬«¼á¡ñδ ¿ ñá¡¡δÑ ºá¡¿¼á½¿ «ñ¡π ¿ Γπ ªÑ
  1881. «í½áßΓ∞.  é  »«ß½Ññ¡¿σ  óÑαß¿∩σ  ß¿ßΓѼδ Γᬿσ ßΓα«ú¿σ «úαá¡¿τÑ¡¿⌐ ¡á αẼÑα
  1882. »α«µÑßßá ¡ÑΓ ¿ ó ñá½∞¡Ñ⌐ΦѼ ó«º¼«ª¡«ßΓ∞ ºáúαπº¬¿ ¬«¼á¡ñ ¿ ñá¡¡δσ ó «ñ¡π  «í-
  1883. ½áßΓ∞ ¬«¼»¿½∩Γ«αἿ ¡Ñ íπñÑΓ »«ññÑনóáΓ∞ß∩.
  1884.     éΓ«α«Ñ  »αÑ¿¼πΘÑßΓó« αáºñѽ∞¡«ú« σαá¡Ñ¡¿∩ ¬«¼á¡ñ ¿ ñá¡¡δσ ß«ßΓ«¿Γ ó ó«º-
  1885. ¼«ª¡«ßΓ¿ ß«ó¼ÑßΓ¡«ú« ¿ß»«½∞º«óá¡¿∩ «í½áßΓÑ⌐ »α«µÑßßἿ. àß½¿ »α«µÑßß ¡Ñ  ¼«-
  1886. ªÑΓ  óÑßΓ¿ ºá»¿ß∞ ó «í½áßΓ∞ ¬«¼á¡ñ, ¬«¼á¡ñδ »α«µÑßßá ¡Ñ »αÑΓÑα»ÑóáεΓ ¡¿¬á¬¿σ
  1887. ¿º¼Ñ¡Ñ¡¿⌐ ß Γ«ú« ¼«¼Ñ¡Γá, ¬á¬ ∩ñα« ºáúαπº¿½« ¿σ ó «í½áßΓ∞ ¬«¼á¡ñ ¿º  ¬«¼á¡ñ-
  1888. ¡«⌐  ßѬµ¿¿ ¿ß»«½¡∩Ѽ«ú« Σá⌐½á. àß½¿ «ñ¿¡ ¿ Γ«Γ ªÑ Σá⌐½ ¿ß»«½¡∩ÑΓß∩ ¡Ñ߬«½∞-
  1889. ¬¿¼¿ »α«µÑßßἿ, ó µÑ½∩σ φ¬«¡«¼¿¿ »á¼∩Γ¿ «¡¿ ¼«úπΓ ¿¼ÑΓ∞ «ñ¡π «í½áßΓ∞ ¬«¼á¡ñ
  1890. ¡á óßÑσ. Æá¬¿¼ «íαẫ¼, ¬«úñá ∩ñα« »α¿ óδ»«½¡Ñ¡¿¿ Σπ¡¬µ¿¿ exec  «Γó«ñ¿Γ  «í-
  1891. ½áßΓ∞ »«ñ ¬«¼á¡ñδ »α«µÑßßá, «¡« »α«óÑα∩ÑΓ, ¿¼ÑÑΓß∩ ½¿ ó«º¼«ª¡«ßΓ∞ ß«ó¼ÑßΓ¡«-
  1892. ú« ¿ß»«½∞º«óá¡¿∩ »α«µÑßßἿ ¬«¼á¡ñ ¿ß»«½¡∩Ѽ«ú« Σá⌐½á, τΓ« «»αÑñѽ∩ÑΓß∩ "¼á-
  1893. ú¿τÑ߬¿¼  τ¿ß½«¼"  ó ºáú«½«ó¬Ñ Σá⌐½á. àß½¿ ñá, Γ« ß »«¼«Θ∞ε á½ú«α¿Γ¼á xalloc
  1894. ∩ñα« ¿ΘÑΓ ßπΘÑßΓóπεΘπε «í½áßΓ∞ ß ¬«¼á¡ñἿ Σá⌐½á ¿½¿ ¡áº¡áτáÑΓ ¡«óπε ó  ß½π-
  1895. τáÑ ÑÑ «ΓßπΓßΓó¿∩ (ß¼. É¿ßπ¡«¬ 7.23).
  1896.     êß»«½¡∩∩  á½ú«α¿Γ¼ xalloc, ∩ñα« »α«ß¼áΓα¿óáÑΓ ß»¿ß«¬ á¬Γ¿ó¡δσ «í½áßΓÑ⌐ ó
  1897. »«¿ß¬áσ «í½áßΓ¿ ß ¬«¼á¡ñἿ Σá⌐½á, ¿¡ñѬߠ¬«Γ«α«ú« ß«ó»áñáÑΓ ß ¿¡ñѬ߫¼  ¿ß-
  1898. »«½¡∩Ѽ«ú«  Σá⌐½á. é ß½πτáÑ ÑÑ «ΓßπΓßΓó¿∩ ∩ñα« óδñѽ∩ÑΓ ¡«óπε «í½áßΓ∞ (á½ú«-
  1899. α¿Γ¼ allocreg), »α¿ß«Ññ¿¡∩ÑΓ ÑÑ ¬ »α«µÑßßπ (á½ú«α¿Γ¼  attachreg),  ºáúαπªáÑΓ
  1900. ÑÑ  ó  »á¼∩Γ∞ (á½ú«α¿Γ¼ loadreg) ¿ ºáΘ¿ΘáÑΓ «Γ ºá»¿ß¿ (read-only). Å«ß½Ññ¡¿⌐
  1901. Φáú »αÑñ»«½áúáÑΓ, τΓ« »α¿ »«»δΓ¬Ñ »α«µÑßßᠺỿßáΓ∞ τΓ«-½¿í« ó  «í½áßΓ∞  ¬«-
  1902. ¼á¡ñ íπñÑΓ »«½πτÑ¡ «Γ¬áº, óδºóá¡¡δ⌐ ß¿ßΓѼ«⌐ ºáΘ¿Γδ »á¼∩Γ¿. é ß½πτáÑ «í¡áαπ-
  1903. ªÑ¡¿∩  «í½áßΓ¿  ß  ¬«¼á¡ñἿ Σá⌐½á ó ß»¿ß¬Ñ á¬Γ¿ó¡δσ «í½áßΓÑ⌐ «ßπΘÑßΓó½∩ÑΓß∩
  1904. »α«óÑα¬á ÑÑ ¡á½¿τ¿∩ ó »á¼∩Γ¿ («¡á ¼«ªÑΓ íδΓ∞ ½¿í« ºáúαπªÑ¡á ó  »á¼∩Γ∞,  ½¿í«
  1905. óδúαπªÑ¡á  ¿º »á¼∩Γ¿) ¿ »α¿ß«Ññ¿¡Ñ¡¿Ñ ÑÑ ¬ »α«µÑßßπ. é ºáóÑαΦÑ¡¿Ñ óδ»«½¡Ñ¡¿∩
  1906. á½ú«α¿Γ¼á xalloc ∩ñα« ß¡¿¼áÑΓ ß «í½áßΓ¿ í½«¬¿α«ó¬π, á »«ºñ¡ÑÑ, ß½Ññπ∩  á½ú«-
  1907. α¿Γ¼π  detachreg  »α¿  óδ»«½¡Ñ¡¿¿  Σπ¡¬µ¿⌐ exit ¿½¿ exec, π¼Ñ¡∞ΦáÑΓ º¡áτÑ¡¿Ñ
  1908. ßτÑΓτ¿¬á «í½áßΓÑ⌐. é Γαáñ¿µ¿«¡¡δσ αÑ὿ºáµ¿∩σ ß¿ßΓÑ¼δ »«ññÑনóáÑΓß∩ Γáí½¿µá
  1909. ¬«¼á¡ñ, ¬ ¬«Γ«α«⌐ ∩ñα« «íαáΘáÑΓß∩ ó ß½πτá∩σ, »«ñ«í¡δσ «»¿ßá¡¡«¼π. Æá¬¿¼  «í-
  1910. αẫ¼,  ß«ó«¬π»¡«ßΓ∞  «í½áßΓÑ⌐  ¬«¼á¡ñ  ¼«ª¡« αáßß¼áΓα¿óáΓ∞ ¬á¬ ¡«óπε óÑαß¿ε
  1911. φΓ«⌐ Γáí½¿µδ.
  1912.     ìừ¼¡¿¼, τΓ« Ñß½¿ «í½áßΓ∞ »α¿  óδ»«½¡Ñ¡¿¿  á½ú«α¿Γ¼á  allocreg  (Éáºñѽ
  1913. 6.5.2)  óδñѽ∩ÑΓß∩ ó»ÑαóδÑ, ∩ñα« πóѽ¿τ¿óáÑΓ º¡áτÑ¡¿Ñ ßτÑΓτ¿¬á ßß佫¬ ¡á ¿¡-
  1914. ñѬß, áßß«µ¿¿α«óá¡¡δ⌐ ß «í½áßΓ∞ε, »α¿ φΓ«¼ º¡áτÑ¡¿Ñ ßτÑΓτ¿¬á ßß佫¬ ¡á¼¿ πªÑ
  1915. í佫 πóѽ¿τÑ¡« ó ßἫ¼ ¡áτá½Ñ óδ»«½¡Ñ¡¿∩ Σπ¡¬µ¿¿ exec (á½ú«α¿Γ¼ namei). Å«ß-
  1916. ¬«½∞¬π ∩ñα« π¼Ñ¡∞ΦáÑΓ º¡áτÑ¡¿Ñ ßτÑΓτ¿¬á Γ«½∞¬« «ñ¿¡ αẠó ºáóÑαΦÑ¡¿Ñ  óδ»«½-
  1917. ¡Ñ¡¿∩  Σπ¡¬µ¿¿  exec (»« á½ú«α¿Γ¼π iput), º¡áτÑ¡¿Ñ ßτÑΓτ¿¬á ßß佫¬ ¡á ¿¡ñѬß
  1918. Σá⌐½á, áßß«µ¿¿α«óá¡¡«ú« ß αáºñѽ∩Ѽ«⌐ «í½áßΓ∞ε ¬«¼á¡ñ ¿ ¿ß»«½¡∩Ѽ«ú« ó  ¡áß-
  1919. Γ«∩Θ¿⌐  ¼«¼Ñ¡Γ,  αáó¡«  »«  ¼Ñ¡∞ΦÑ⌐  ¼ÑαÑ 1. Å«φΓ«¼π ¬«úñá »α«µÑßß αáºαδóáÑΓ
  1920. ßó∩º∞ ß Σá⌐½«¼ (Σπ¡¬µ¿∩ unlink), ß«ñÑন¼«Ñ Σá⌐½á  «ßΓáÑΓß∩  ¡ÑΓα«¡πΓδ¼  (¡Ñ
  1921. »αÑΓÑα»ÑóáÑΓ  ¿º¼Ñ¡Ñ¡¿⌐).  Å«ß½Ñ  ºáúαπº¬¿ ó »á¼∩Γ∞ ßá¼ Σá⌐½ ∩ñαπ ßΓá¡«ó¿Γß∩
  1922.  
  1923.                                     209
  1924.  
  1925. ¡Ñ¡πªÑ¡, ∩ñα« ¿¡ΓÑαÑßπÑΓ Γ«½∞¬« π¬áºáΓѽ∞ ¡á ¬«»¿ε ¿¡ñѬßá Σá⌐½á  ó  »á¼∩Γ¿,
  1926. ß«ñÑαªáΘ¿⌐ß∩ ó Γáí½¿µÑ «í½áßΓÑ⌐; φëàπ¬áºáΓѽ∞ ¿ íπñÑΓ ¿ñÑ¡Γ¿Σ¿µ¿α«óáΓ∞
  1927.  
  1928.     ┌────────────────────────────────────────────────────────────┐
  1929.     │ á½ú«α¿Γ¼ xalloc     /* óδñѽѡ¿Ñ ¿ ¿¡¿µ¿á½¿ºáµ¿∩ «í½áßΓ¿   │
  1930.     │                        ¬«¼á¡ñ */                           │
  1931.     │ óσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩:  ¿¡ñѬߠ¿ß»«½¡∩Ѽ«ú« Σá⌐½á             │
  1932.     │ óδσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩: «ΓßπΓßΓóπÑΓ                           │
  1933.     │ {                                                          │
  1934.     │   Ñß½¿ (¿ß»«½¡∩Ѽδ⌐ Σá⌐½ ¡Ñ ¿¼ÑÑΓ «Γñѽ∞¡«⌐ «í½áßΓ¿ ¬«¼á¡ñ)│
  1935.     │       óÑα¡πΓ∞ π»αáó½Ñ¡¿Ñ;                                  │
  1936.     │   Ñß½¿ (πªÑ ¿¼ÑÑΓß∩ «í½áßΓ∞ ¬«¼á¡ñ, áßß«µ¿¿α«óá¡¡á∩ ß ¿¡-  │
  1937.     │    ñѬ߫¼ ¿ß»«½¡∩Ѽ«ú« Σá⌐½á)                              │
  1938.     │   {                                                        │
  1939.     │       /* «í½áßΓ∞ ¬«¼á¡ñ πªÑ ßπΘÑßΓóπÑΓ ... »«ñ¬½ετ¿Γ∞ß∩ ¬  │
  1940.     │          ¡Ñ⌐ */                                            │
  1941.     │       ºáí½«¬¿α«óáΓ∞ «í½áßΓ∞;                               │
  1942.     │       óδ»«½¡¿Γ∞ »«¬á (ß«ñÑন¼«Ñ «í½áßΓ¿ ÑΘÑ ¡Ñ ñ«ßΓπ»¡«)  │
  1943.     │       {                                                    │
  1944.     │          /* «»Ñαᵿ¿ ¡áñ ßτÑΓτ¿¬«¼ ßß佫¬, »αÑñ«σαá¡∩εΘ¿Ñ  │
  1945.     │             «Γ ú½«íá½∞¡«ú« πñá½Ñ¡¿∩ «í½áßΓ¿                │
  1946.     │           */                                               │
  1947.     │          πóѽ¿τ¿Γ∞ º¡áτÑ¡¿Ñ ßτÑΓτ¿¬á ßß佫¬ ¡á «í½áßΓ∞;    │
  1948.     │          ß¡∩Γ∞ ß «í½áßΓ¿ í½«¬¿α«ó¬π;                       │
  1949.     │          »α¿«ßΓá¡«ó¿Γ∞ß∩ (»«¬á ß«ñÑন¼«Ñ «í½áßΓ¿ ¡Ñ ßΓá¡ÑΓ│
  1950.     │           ñ«ßΓπ»¡δ¼);                                      │
  1951.     │          ºáí½«¬¿α«óáΓ∞ «í½áßΓ∞;                            │
  1952.     │          π¼Ñ¡∞Φ¿Γ∞ º¡áτÑ¡¿Ñ ßτÑΓτ¿¬á ßß佫¬ ¡á «í½áßΓ∞;    │
  1953.     │       }                                                    │
  1954.     │       »α¿ß«Ññ¿¡¿Γ∞ «í½áßΓ∞ ¬ »α«µÑßßπ (á½ú«α¿Γ¼ attachreg);│
  1955.     │       ß¡∩Γ∞ ß «í½áßΓ¿ í½«¬¿α«ó¬π;                          │
  1956.     │       óÑα¡πΓ∞ π»αáó½Ñ¡¿Ñ;                                  │
  1957.     │   }                                                        │
  1958.     │   /* ¿¡ΓÑαÑßπεΘá∩ ¡áß «í½áßΓ∞ ¬«¼á¡ñ ¡Ñ ßπΘÑßΓóπÑΓ -- ß«º- │
  1959.     │      ñáΓ∞ ¡«óπε */                                         │
  1960.     │   óδñѽ¿Γ∞ «í½áßΓ∞ ¬«¼á¡ñ (á½ú«α¿Γ¼ allocreg); /* «í½áßΓ∞  │
  1961.     │                                                   ºáí½«¬¿- │
  1962.     │                                                   α«óá¡á */│
  1963.     │   Ñß½¿ («í½áßΓ∞ »«¼Ñτѡᠬᬠ"¡Ñ«ΓΩѼ½Ñ¼á∩")               │
  1964.     │       «Γ¬½ετ¿Γ∞ ß««ΓóÑΓßΓóπεΘ¿⌐ Σ½áú;                      │
  1965.     │   »«ñ¬½ετ¿Γ∞ «í½áßΓ∞ ¬ ó¿αΓπá½∞¡«¼π áñαÑßπ, π¬áºá¡¡«¼π ó   │
  1966.     │    ºáú«½«ó¬Ñ Σá⌐½á (á½ú«α¿Γ¼ attachreg);                   │
  1967.     │   Ñß½¿ (Σá⌐½ ¿¼ÑÑΓ ß»Ñµ¿á½∞¡δ⌐ Σ«α¼áΓ ñ½∩ ß¿ßΓѼδ ß ºá¼ÑΘÑ-│
  1968.     │       ¡¿Ñ¼ ßΓαá¡¿µ)                                        │
  1969.     │       /* φΓ«Γ ß½πτá⌐ íπñÑΓ αáßß¼«ΓαÑ¡ ó ú½áóÑ 9 */         │
  1970.     │   ó »α«Γ¿ó¡«¼ ß½πτáÑ     /* Σá⌐½ ¡Ñ ¿¼ÑÑΓ ß»Ñµ¿á½∞¡«ú« Σ«α-│
  1971.     │                             ¼áΓá */                        │
  1972.     │       ßτ¿ΓáΓ∞ ¬«¼á¡ñδ ¿º Σá⌐½á ó «í½áßΓ∞ (á½ú«α¿Γ¼         │
  1973.     │        loadreg);                                           │
  1974.     │   ¿º¼Ñ¡¿Γ∞ αѪ¿¼ ºáΘ¿Γδ «í½áßΓ¿ ó ºá»¿ß¿ τáßΓ¡«⌐ Γáí½¿µδ   │
  1975.     │    «í½áßΓÑ⌐ »α«µÑßßá ¡á "read-only";                       │
  1976.     │   ß¡∩Γ∞ ß «í½áßΓ¿ í½«¬¿α«ó¬π;                              │
  1977.     │ }                                                          │
  1978.     └────────────────────────────────────────────────────────────┘
  1979.  
  1980.           É¿ßπ¡«¬ 7.23. Ç½ú«α¿Γ¼ óδñѽѡ¿∩ «í½áßΓÑ⌐ ¬«¼á¡ñ
  1981.  
  1982.  
  1983. Σá⌐½, ßó∩ºá¡¡δ⌐ ß «í½áßΓ∞ε. àß½¿ íδ º¡áτÑ¡¿Ñ ßτÑΓτ¿¬á ßß佫¬ ßΓὫ αáó¡δ¼ 0,
  1984.  
  1985.                                     210
  1986.  
  1987. ∩ñα« ¼«ú½« íδ »ÑαÑñáΓ∞ ¬«»¿ε ¿¡ñѬßá ó »á¼∩Γ¿ ñαπú«¼π Σá⌐½π, ΓѼ ßá¼δ¼ ñѽá∩
  1988. ß«¼¡¿Γѽ∞¡δ¼ º¡áτÑ¡¿Ñ π¬áºáΓѽ∩ ¡á ¿¡ñѬߠó ºá»¿ß¿ Γáí½¿µδ «í½áßΓÑ⌐: Ñß½¿ íδ
  1989. »«½∞º«óáΓÑ½ε  »α¿Φ½«ß∞ ¿ß»«½¡¿Γ∞ ¡«óδ⌐ Σá⌐½, ¿ß»«½∞ºπ∩ Σπ¡¬µ¿ε exec, ∩ñα« »«
  1990. «Φ¿í¬Ñ ßó∩ºá½« íδ Ñú« ß «í½áßΓ∞ε ¬«¼á¡ñ ßΓáα«ú« Σá⌐½á. ¥Γá »α«í½Ñ¼á πßΓαá¡∩-
  1991. ÑΓß∩ í½áú«ñáα∩ Γ«¼π, τΓ« ∩ñα« »α¿ óδ»«½¡Ñ¡¿¿ á½ú«α¿Γ¼á allocreg  πóѽ¿τ¿óáÑΓ
  1992. º¡áτÑ¡¿Ñ  ßτÑΓτ¿¬á  ßß佫¬  ¡á ¿¡ñѬß, »αÑñπ»αѪñá∩ ΓѼ ßá¼δ¼ »ÑαѡạáτÑ¡¿Ñ
  1993. ¿¡ñѬßá ó »á¼∩Γ¿ ñαπú«¼π Σá⌐½π. è«úñá »α«µÑßß ó«  óαѼ∩  óδ»«½¡Ñ¡¿∩  Σπ¡¬µ¿⌐
  1994. exit  ¿½¿  exec «Γß«Ññ¿¡∩ÑΓ «í½áßΓ∞ ¬«¼á¡ñ, ∩ñα« π¼Ñ¡∞ΦáÑΓ º¡áτÑ¡¿Ñ ßτÑΓτ¿¬á
  1995. ßß佫¬ ¡á ¿¡ñѬߠ(»« á½ú«α¿Γ¼π freereg), Ñß½¿ Γ«½∞¬«  ßó∩º∞  ¿¡ñѬßá  ß  «í-
  1996. ½áßΓ∞ε ¡Ñ »«¼Ñτѡᠬᬠ"¡Ñ«ΓΩѼ½Ñ¼á∩".
  1997.  
  1998.     Æáí½¿µá ¿¡ñѬ߫󠠠                      Æáí½¿µá «í½áßΓÑ⌐
  1999.    ┌────────────────┐  τΓ« ¼«ú½« íδ »α«¿-   ┌────────────────┐
  2000.    │       ∙        │  º«⌐Γ¿, Ñß½¿ íδ ßτÑΓ- │       ∙        │
  2001.    │       ∙        │  τ¿¬ ßß佫¬ ¡á ¿¡ñѬߠ│       ∙        │
  2002.    │       ∙        │  Σá⌐½á /bin/date íδ½  │       ∙        │
  2003.    │       ∙        │  αáóÑ¡ 0              ├────────────────┤
  2004.    │       ∙        │                       │ «í½áßΓ∞ ¬«¼á¡ñ │
  2005.    │       ∙        │           ∙─ ─ ─ ─ ─ ─│─  ñ½∩ Σá⌐½á    │
  2006.    │       ∙        │           │           │   /bin/who     │
  2007.    ├────────────────┤           ∙           ├────────────────┤
  2008.    │ ¬«»¿∩ ¿¡ñѬßá ─│─ ─ ─ ─ ─ ─┘           │       ∙        │
  2009.    │ Σá⌐½á /bin/date│                       │       ∙        │
  2010.    │    ó »á¼∩Γ¿   <┼───────────┐           │       ∙        │
  2011.    ├────────────────┤           │           ├────────────────┤
  2012.    │       ∙        │           │           │ «í½áßΓ∞ ¬«¼á¡ñ │
  2013.    │       ∙        │           └───────────┼─  ñ½∩ Σá⌐½á    │
  2014.    │       ∙        │           π¬áºáΓѽ∞ ¡á│   /bin/date    │
  2015.    │       ∙        │           ¬«»¿ε ¿¡ñѬ-├────────────────┤
  2016.    │       ∙        │           ßá ó »á¼∩Γ¿ │       ∙        │
  2017.    │       ∙        │                       │       ∙        │
  2018.    └────────────────┘                       └────────────────┘
  2019.  
  2020.     É¿ßπ¡«¬ 7.24.  éºá¿¼«ßó∩º∞ ¼Ñªñπ Γáí½¿µÑ⌐ ¿¡ñѬ߫󠿠Γáí½¿µÑ⌐
  2021.                    «í½áßΓÑ⌐  ó ß½πτáÑ  ß«ó¼ÑßΓ¡«ú«  ¿ß»«½∞º«óá¡¿∩
  2022.                    »α«µÑßßἿ «ñ¡«⌐ «í½áßΓ¿ ¬«¼á¡ñ
  2023.  
  2024.     Éáßß¼«Γα¿¼ ó ¬áτÑßΓóÑ »α¿¼Ñαá ß¿Γπᵿε, »α¿óÑñÑ¡¡πε ¡á É¿ßπ¡¬Ñ 7.21, úñÑ
  2025. »«¬áºá¡á  óºá¿¼«ßó∩º∞ ¼Ñªñπ ßΓαπ¬ΓπαἿ ñá¡¡δσ ó »α«µÑßßÑ óδ»«½¡Ñ¡¿∩ Σπ¡¬µ¿¿
  2026. exec »« «Γ¡«ΦÑ¡¿ε ¬ Σá⌐½π "/bin/date" »α¿ πß½«ó¿¿ αáß»«½«ªÑ¡¿∩ ¬«¼á¡ñ ¿ ñá¡-
  2027. ¡δσ Σá⌐½á ó αạδσ «í½áßΓ∩σ. è«úñá »α«µÑßß ¿ß»«½¡∩ÑΓ Σá⌐½ "/bin/date" »Ñαóδ⌐
  2028. αáº, ∩ñα« ¡áº¡áτáÑΓ ñ½∩ ¬«¼á¡ñ Σá⌐½á Γ«τ¬π óσ«ñá ó Γáí½¿µÑ «í½áßΓÑ⌐ (É¿ßπ¡«¬
  2029. 7.24) ¿ »« ºáóÑαΦÑ¡¿¿ óδ»«½¡Ñ¡¿∩ Σπ¡¬µ¿¿ exec «ßΓáó½∩ÑΓ  ßτÑΓτ¿¬  ßß佫¬  ¡á
  2030. ¿¡ñѬߠαáó¡δ¼ 1. è«úñá Σá⌐½ "/bin/date" ºáóÑαΦáÑΓß∩, ∩ñα« ºá»π߬áÑΓ á½ú«α¿Γ-
  2031. ¼δ detachreg ¿ freereg, ßíαáßδóá∩ º¡áτÑ¡¿Ñ ßτÑΓτ¿¬á ßß佫¬ ó 0. Äñ¡á¬«, Ñß½¿
  2032. ∩ñα« ó »Ñαó«¼ ß½πτáÑ ¡Ñ πóѽ¿τ¿½« º¡áτÑ¡¿Ñ ßτÑΓτ¿¬á, «¡« »« ºáóÑαΦÑ¡¿¿ Σπ¡¬-
  2033. µ¿¿  exec «ßΓá¡ÑΓß∩ αáó¡δ¼ 0 ¿ ¿¡ñѬߠ¡á óßѼ »α«Γ∩ªÑ¡¿¿ óδ»«½¡Ñ¡¿∩ »α«µÑßßá
  2034. íπñÑΓ ¡áσ«ñ¿Γ∞ß∩ ó ß»¿ß¬Ñ ßó«í«ñ¡δσ ¿¡ñѬ߫ó. ÅαÑñ»«½«ª¿¼, τΓ« ó  φΓ«  óαѼ∩
  2035. ßó«í«ñ¡δ⌐  ¿¡ñѬߠ »«¡áñ«í¿½ß∩ »α«µÑßßπ, ºá»πßΓ¿óΦѼπ ß »«¼«Θ∞ε Σπ¡¬µ¿¿ exec
  2036. Σá⌐½ "/bin/who", Γ«úñá ∩ñα« ¼«ªÑΓ óδñѽ¿Γ∞ φΓ«¼π »α«µÑßßπ ¿¡ñѬß, αá¡ÑÑ »α¿-
  2037. ¡áñ½ÑªáóΦ¿⌐ Σá⌐½π "/ bin/date". Åα«ß¼áΓα¿óá∩ Γáí½¿µπ «í½áßΓÑ⌐ ó »«¿ß¬áσ  ¿¡-
  2038. ñѬßá   Σá⌐½á   "/bin/who",   ∩ñα«  ó¼ÑßΓ«  ¡Ñú«  óδíαὫ  íδ  ¿¡ñѬߠ Σá⌐½á
  2039. "/bin/date". æτ¿Γá∩, τΓ« «í½áßΓ∞ ß«ñÑαª¿Γ ¬«¼á¡ñδ Σá⌐½á "/bin/who", ∩ñα« ¿ß-
  2040. »«½¡¿½« íδ ß«óßѼ ¡Ñ Γπ »α«úαá¼¼π. Å«φΓ«¼π º¡áτÑ¡¿Ñ ßτÑΓτ¿¬á ßß佫¬  ¡á  ¿¡-
  2041. ñѬߠ á¬Γ¿ó¡«ú« Σá⌐½á, ßó∩ºá¡¡«ú« ß αáºñѽ∩Ѽ«⌐ «í½áßΓ∞ε ¬«¼á¡ñ, ñ«½ª¡« íδΓ∞
  2042. ¡Ñ ¼Ñ¡∞ΦÑ Ññ¿¡¿µδ, τΓ«íδ ∩ñα« ¡Ñ ¼«ú½« »Ñαѡạáτ¿Γ∞ ¿¡ñѬߠñαπú«¼π Σá⌐½π.
  2043.     é«º¼«ª¡«ßΓ∞ ß«ó¼ÑßΓ¡«ú« ¿ß»«½∞º«óá¡¿∩ αẽ¿τ¡δ¼¿ »α«µÑßßἿ «ñ¡¿σ ¿  ΓÑσ
  2044. ªÑ  «í½áßΓÑ⌐ ¬«¼á¡ñ »«ºó«½∩ÑΓ φ¬«¡«¼¿Γ∞ óαѼ∩, ºáΓαáτ¿óáѼ«Ñ ¡á ºá»π߬ »α«ú-
  2045. αá¼¼δ ß »«¼«Θ∞ε Σπ¡¬µ¿¿ exec. Çñ¼¿¡¿ßΓαáΓ«αδ ß¿ßΓÑ¼δ ¼«úπΓ ß »«¼«Θ∞ε ß¿ßΓѼ-
  2046.  
  2047.                                     211
  2048.  
  2049. ¡«⌐ Σπ¡¬µ¿¿ (¿ ¬«¼á¡ñδ) chmod πßΓá¡áó½¿óáΓ∞ ñ½∩ τáßΓ« ¿ß»«½¡∩Ѽδσ Σá⌐½«ó αÑ-
  2050. ª¿¼ "sticky-bit", ßπΘ¡«ßΓ∞ ¬«Γ«α«ú« ºá¬½ετáÑΓß∩ ó ß½ÑñπεΘѼ.  è«úñá  »α«µÑßß
  2051. ¿ß»«½¡∩ÑΓ Σá⌐½, ñ½∩ ¬«Γ«α«ú« πßΓá¡«ó½Ñ¡ αѪ¿¼ "sticky-bit", ∩ñα« ¡Ñ «ßó«í«ª-
  2052. ñáÑΓ  «í½áßΓ∞  »á¼∩Γ¿,  «ΓóÑñÑ¡¡πε  »«ñ ¬«¼á¡ñδ Σá⌐½á, «Γß«Ññ¿¡∩∩ «í½áßΓ∞ «Γ
  2053. »α«µÑßßá ó« óαѼ∩ óδ»«½¡Ñ¡¿∩ Σπ¡¬µ¿⌐ exit ¿½¿ exec, ñáªÑ Ñß½¿ º¡áτÑ¡¿Ñ ßτÑΓ-
  2054. τ¿¬á ßß佫¬ ¡á ¿¡ñѬߠßΓá¡«ó¿Γß∩ αáó¡δ¼ 0. ƒñα« «ßΓáó½∩ÑΓ «í½áßΓ∞  ¬«¼á¡ñ  ó
  2055. »Ñαó«¡áτá½∞¡«¼  ó¿ñÑ,  »α¿  φΓ«¼ º¡áτÑ¡¿Ñ ßτÑΓτ¿¬á ßß佫¬ ¡á ¿¡ñѬߠαáó¡« 1,
  2056. »πßΓ∞ ñáªÑ «í½áßΓ∞ ¡Ñ »«ñ¬½ετÑ¡á í«½∞ΦÑ ¡¿ ¬ «ñ¡«¼π ¿º  »α«µÑßß«ó.  àß½¿  ªÑ
  2057. Σá⌐½ íπñÑΓ ÑΘÑ αẠºá»πΘÑ¡ ¡á óδ»«½¡Ñ¡¿Ñ (πªÑ ñαπú¿¼ »α«µÑßß«¼), ∩ñα« ó Γáí-
  2058. ½¿µÑ  «í½áßΓÑ⌐  «í¡áαπª¿Γ ºá»¿ß∞, ß««ΓóÑΓßΓóπεΘπε «í½áßΓ¿ ß ¬«¼á¡ñἿ Σá⌐½á.
  2059. Åα«µÑßß ºáΓαáΓ¿Γ ¡á ºá»π߬ Σá⌐½á ¼Ñ¡∞ΦÑ óαѼѡ¿, Γᬠ¬á¬ Ñ¼π ¡Ñ »α¿ñÑΓß∩ τ¿-
  2060. ΓáΓ∞ ¬«¼á¡ñδ ¿º Σá⌐½«ó«⌐ ß¿ßΓѼδ. àß½¿ ¬«¼á¡ñδ Σá⌐½á óßÑ ÑΘÑ ¡áσ«ñ∩Γß∩ ó »á-
  2061. ¼∩Γ¿, ó ¿σ »ÑαѼÑΘÑ¡¿¿ ¡Ñ íπñÑΓ ¡Ñ«íσ«ñ¿¼«ßΓ¿; Ñß½¿ ªÑ ¬«¼á¡ñδ óδúαπªÑ¡δ  ó«
  2062. ó¡ÑΦ¡εε »á¼∩Γ∞, íπñÑΓ ú«αáºñ« íδßΓαÑÑ ºáúαπº¿Γ∞ ¿σ ¿º ó¡ÑΦ¡Ñ⌐ »á¼∩Γ¿, τѼ ¿º
  2063. Σá⌐½«ó«⌐ ß¿ßΓѼδ (ß¼. «í φΓ«¼ ó ú½áóÑ 9).
  2064.     ƒñα«  πñá½∩ÑΓ ¿º Γáí½¿µδ «í½áßΓÑ⌐ ºá»¿ß¿, ß««ΓóÑΓßΓóπεΘ¿Ñ «í½áßΓ∩¼ ß ¬«-
  2065. ¼á¡ñἿ Σá⌐½á, ñ½∩ ¬«Γ«α«ú« πßΓá¡«ó½Ñ¡ αѪ¿¼  "sticky-bit"  (¿¡δ¼¿  ß½«óἿ,
  2066. ¬«úñá  «í½áßΓ∞ »«¼Ñτѡᠬᬠ"¡Ñ«ΓΩѼ½Ñ¼á∩" τáßΓ∞ Σá⌐½á ¿½¿ »α«µÑßßá), ó ß½Ñ-
  2067. ñπεΘ¿σ ß½πτá∩σ:
  2068.  1. àß½¿ »α«µÑßß «Γ¬αδ½ Σá⌐½ ñ½∩ ºá»¿ß¿, ó αѺπ½∞ΓáΓÑ ß««ΓóÑΓßΓóπεΘ¿σ «»Ñαá-
  2069.     µ¿⌐ ß«ñÑন¼«Ñ Σá⌐½á ¿º¼Ñ¡¿Γß∩, »α¿ φΓ«¼ íπñÑΓ  ºáΓα«¡πΓ«  ¿  ß«ñÑন¼«Ñ
  2070.     «í½áßΓ¿.
  2071.  2.  àß½¿  »α«µÑßß  ¿º¼Ñ¡¿½  »αáóá  ñ«ßΓπ»á  ¬  Σá⌐½π (chmod), «Γ¼Ñ¡¿ó αѪ¿¼
  2072.     "sticky-bit", Σá⌐½ ¡Ñ ñ«½ªÑ¡ «ßΓáóáΓ∞ß∩ ó Γáí½¿µÑ «í½áßΓÑ⌐.
  2073.  3. àß½¿ »α«µÑßß αẫαóá½ ßó∩º∞ ß Σá⌐½«¼ (unlink), «¡ ¡Ñ ß¼«ªÑΓ  í«½∞ΦÑ  ¿ß-
  2074.     »«½¡∩Γ∞  φëà Σá⌐½,  »«ß¬«½∞¬π  π Σá⌐½á ¡Ñ íπñÑΓ Γ«τ¬¿ óσ«ñá ó Σá⌐½«óπε
  2075.     ß¿ßΓѼπ; ß½Ññ«óáΓѽ∞¡«, ¿ óßÑ «ßΓá½∞¡δÑ »α«µÑßßδ ¡Ñ íπñπΓ ¿¼ÑΓ∞  ñ«ßΓπ»á
  2076.     ¬  ºá»¿ß¿ ó Γáí½¿µÑ «í½áßΓÑ⌐, ß««ΓóÑΓßΓóπεΘÑ⌐ Σá⌐½π. Å«ß¬«½∞¬π «í½áßΓ∞ ß
  2077.     ¬«¼á¡ñἿ Σá⌐½á í«½∞ΦÑ ¡Ñ ¿ß»«½∞ºπÑΓß∩, ∩ñα« ¼«ªÑΓ «ßó«í«ñ¿Γ∞ ÑÑ  ó¼ÑßΓÑ
  2078.     ß «ßΓá½∞¡δ¼¿ αÑßπαßἿ, ºá¡¿¼áÑ¼δ¼¿ Σá⌐½«¼.
  2079.  4. àß½¿ »α«µÑßß ñѼ«¡Γ¿απÑΓ Σá⌐½«óπε ß¿ßΓѼπ, Σá⌐½ »ÑαÑßΓáÑΓ íδΓ∞ ñ«ßΓπ»¡δ¼
  2080.     ¿  ¡¿  «ñ¿¡ ¿º »α«µÑßß«ó ¡Ñ ¼«ªÑΓ Ñú« ¿ß»«½¡¿Γ∞. é «ßΓá½∞¡«¼ - óßÑ ¬á¬ ó
  2081.     »αÑñδñπΘѼ ß½πτáÑ.
  2082.  5. àß½¿ ∩ñα« ¿ß»«½∞º«óὫ πªÑ óßÑ »α«ßΓαá¡ßΓó« ó¡ÑΦ¡Ñ⌐  »á¼∩Γ¿,  «ΓóÑñÑ¡¡«Ñ
  2083.     »«ñ  óδúαπº¬π ºáñáτ, «¡« »δΓáÑΓß∩ «ßó«í«ñ¿Γ∞ τáßΓ∞ »á¼∩Γ¿ ºá ßτÑΓ «í½áß-
  2084.     ΓÑ⌐, ¿¼ÑεΘ¿σ »«¼ÑΓ¬π "sticky-bit", ¡« ¡Ñ ¿ß»«½∞ºπѼδσ  ó  ¡áßΓ«∩Θ¿⌐  ¼«-
  2085.     ¼Ñ¡Γ.  ìÑß¼«Γα∩  ¡á Γ«, τΓ« φΓ¿ «í½áßΓ¿ ¼«úπΓ ó߬«αÑ »«¡áñ«í¿Γ∞ß∩ ñαπú¿¼
  2086.     »α«µÑßßá¼, »«ΓαÑí¡«ßΓ¿ ∩ñαá ∩ó½∩εΓß∩ í«½ÑÑ ßα«τ¡δ¼¿.
  2087.  
  2088.     é »Ñαóδσ ñóπσ ß½πτá∩σ «í½áßΓ∞ ¬«¼á¡ñ ß »«¼ÑΓ¬«⌐ "sticky-bit" ñ«½ª¡á íδΓ∞
  2089. «ßó«í«ªñÑ¡á, »«ß¬«½∞¬π «¡á í«½∞ΦÑ ¡Ñ «ΓαáªáÑΓ ΓѬπΘÑÑ ß«ßΓ«∩¡¿Ñ Σá⌐½á. é «ß-
  2090. Γá½∞¡δσ  ß½πτá∩σ  φΓ«  ñѽáÑΓß∩ ¿º »αá¬Γ¿τÑ߬¿σ ß««íαáªÑ¡¿⌐. è«¡Ñτ¡« ªÑ ∩ñα«
  2091. «ßó«í«ªñáÑΓ «í½áßΓ∞ Γ«½∞¬« »α¿ Γ«¼ πß½«ó¿¿, τΓ« «¡á ¡Ñ ¿ß»«½∞ºπÑΓß∩ ¡¿ «ñ¡¿¼
  2092. ¿º óδ»«½¡∩εΘ¿σß∩ »α«µÑßß«ó (ßτÑΓτ¿¬ ßß佫¬ ¡á ¡ÑÑ ¿¼ÑÑΓ ¡π½Ñó«Ñ º¡áτÑ¡¿Ñ); ó
  2093. »α«Γ¿ó¡«¼ ß½πτáÑ φΓ« »α¿óѽ« íδ ¬ áóáα¿⌐¡«¼π ºáóÑαΦÑ¡¿ε óδ»«½¡Ñ¡¿∩ ß¿ßΓѼ¡δσ
  2094. Σπ¡¬µ¿⌐ open, unlink ¿ umount (ß½πτá¿ 1, 3 ¿ 4, ß««ΓóÑΓßΓóÑ¡¡«).
  2095.     àß½¿ »α«µÑßß ºá»π߬áÑΓ ß »«¼«Θ∞ε Σπ¡¬µ¿¿ exec ßἫú« ßÑí∩, á½ú«α¿Γ¼  óδ-
  2096. »«½¡Ñ¡¿∩ Σπ¡¬µ¿¿ ¡Ñ߬«½∞¬« πß½«ª¡∩ÑΓß∩. Å« ¬«¼á¡ñÑ
  2097.  
  2098.     sh script
  2099.  
  2100. ¬«¼á¡ñ¡δ⌐  »α«µÑßß«α  shell  »«α«ªñáÑΓ  ¡«óδ⌐ »α«µÑßß (¡«óπε óÑΓó∞), ¬«Γ«αδ⌐
  2101. ¿¡¿µ¿¿απÑΓ ºá»π߬ shell'á (ß »«¼«Θ∞ε Σπ¡¬µ¿¿ exec) ¿ ¿ß»«½¡∩ÑΓ ¬«¼á¡ñδ Σá⌐½á
  2102. "script". àß½¿ »α«µÑßß ºá»π߬áÑΓ ßἫú« ßÑí∩ ¿ »α¿ φΓ«¼ Ñú«  «í½áßΓ∞  ¬«¼á¡ñ
  2103. ñ«»π߬áÑΓ  ß«ó¼ÑßΓ¡«Ñ ¿ß»«½∞º«óá¡¿Ñ, ∩ñαπ »α¿ñÑΓß∩ ß½Ññ¿Γ∞ ºá ΓѼ, τΓ«íδ »α¿
  2104. «íαáΘÑ¡¿¿ óÑΓóÑ⌐ »α«µÑßßá ¬ ¿¡ñѬßá¼ ¿ «í½áßΓ∩¼ ¡Ñ ó«º¡¿¬á½¿ óºá¿¼¡δÑ í½«¬¿-
  2105. α«ó¬¿. ê¡áτÑ ú«ó«α∩, ∩ñα« ¡Ñ ¼«ªÑΓ, ¡Ñ ß¡¿¼á∩ í½«¬¿α«ó¬¿ ß« "ßΓáα«⌐" «í½áßΓ¿
  2106. ¬«¼á¡ñ, »«»δΓáΓ∞ß∩ ºáí½«¬¿α«óáΓ∞ "¡«óπε" «í½áßΓ∞, »«ß¬«½∞¬π  ¡á  ßἫ¼  ñѽÑ
  2107. φΓ«  «ñ¡á  ¿  ΓᠪѠ«í½áßΓ∞. é¼ÑßΓ« φΓ«ú« ∩ñα« »α«ßΓ« «ßΓáó½∩ÑΓ "ßΓáαπε" «í-
  2108.  
  2109.                                     212
  2110.  
  2111. ½áßΓ∞ ¬«¼á¡ñ »α¿ß«Ññ¿¡Ñ¡¡«⌐ ¬ »α«µÑßßπ, Γᬠ¬á¬ ó ½εí«¼ ß½πτáÑ Ñ⌐  »αÑñßΓ«¿Γ
  2112. »«óΓ«α¡«Ñ ¿ß»«½∞º«óá¡¿Ñ.
  2113.     Äíδτ¡« »α«µÑßßδ óδºδóáεΓ Σπ¡¬µ¿ε exec »«ß½Ñ Σπ¡¬µ¿¿ fork; Γᬿ¼ «íαẫ¼,
  2114. ó« óαѼ∩ óδ»«½¡Ñ¡¿∩ Σπ¡¬µ¿¿ fork »α«µÑßß-»«Γ«¼«¬ ¬«»¿απÑΓ áñαÑß¡«Ñ »α«ßΓαá¡-
  2115. ßΓó«  ßó«Ñú«  α«ñ¿Γѽ∩, ¡« ßíαáßδóáÑΓ Ñú« ó« óαѼ∩ óδ»«½¡Ñ¡¿∩ Σπ¡¬µ¿¿ exec ¿
  2116. »« ßαáó¡Ñ¡¿ε ß α«ñ¿ΓѽѼ ¿ß»«½¡∩ÑΓ «íαẠπªÑ ñαπú«⌐ »α«úαá¼¼δ.  ìÑ  í佫  íδ
  2117. í«½ÑÑ  ÑßΓÑßΓóÑ¡¡δ¼ «íΩÑñ¿¡¿Γ∞ ñóÑ ß¿ßΓѼ¡δÑ Σπ¡¬µ¿¿ ó «ñ¡π, ¬«Γ«αá∩ íδ ºáú-
  2118. απªá½á »α«úαá¼¼π ¿ ¿ß»«½¡∩½á ÑÑ »«ñ ó¿ñ«¼ ¡«ó«ú« »α«µÑßßá  ?  É¿τ¿  óδ߬áºá½
  2119. »αÑñ»«½«ªÑ¡¿Ñ, τΓ« ó«º¡¿¬¡«óÑ¡¿Ñ fork ¿ exec ¬á¬ «Γñѽ∞¡δσ ß¿ßΓѼ¡δσ Σπ¡¬µ¿⌐
  2120. «í∩ºá¡«  Γ«¼π,  τΓ«  »α¿ ß«ºñá¡¿¿ ß¿ßΓѼδ UNIX Σπ¡¬µ¿∩ fork íδ½á ñ«íáó½Ñ¡á ¬
  2121. πªÑ ßπΘÑßΓóπεΘѼπ «íαáºπ ∩ñαá ß¿ßΓѼδ (ß¼. [Ritchie 84a], ßΓα.1584). Äñ¡á¬«,
  2122. αáºñѽѡ¿Ñ fork ¿ exec ó᪡« ¿ ß Σπ¡¬µ¿«¡á½∞¡«⌐ Γ«τ¬¿  ºαÑ¡¿∩,  »«ß¬«½∞¬π  ó
  2123. φΓ«¼ ß½πτáÑ »α«µÑßßδ ¼«úπΓ αáí«ΓáΓ∞ ß ñÑß¬α¿»Γ«αἿ Σá⌐½«ó ßΓá¡ñáαΓ¡«ú« óó«-
  2124. ñá-óδó«ñá  ¡Ñºáó¿ß¿¼«,  »«óδΦá∩ ΓѼ ßá¼δ¼ "φ½Ñúá¡Γ¡«ßΓ∞" ¿ß»«½∞º«óá¡¿∩ ¬á¡á-
  2125. ½«ó. Åα¿¼Ñα, »«¬áºδóáεΘ¿⌐ ¿ß»«½∞º«óá¡¿Ñ φΓ«⌐ ó«º¼«ª¡«ßΓ¿, »α¿ó«ñ¿Γß∩ ó  αáº-
  2126. ñѽѠ7.8.
  2127.  
  2128.  
  2129.     E7.6 èÄä êäàìÆêöêèÇûêê ÅÄï£çÄéÇÆàÅÉÄûàææÇF
  2130.  
  2131.     ƒñα« ßó∩ºδóáÑΓ ß »α«µÑßß«¼ ñóá ¬«ñá ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ »«½∞º«óáΓѽ∩, ¡Ñ ºáó¿-
  2132. ß∩Θ¿σ  «Γ ¬«ñá ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ »α«µÑßßá: αÑá½∞¡δ⌐ (ñÑ⌐ßΓó¿Γѽ∞¡δ⌐) ¬«ñ ¿ñÑ¡Γ¿-
  2133. Σ¿¬áµ¿¿ »«½∞º«óáΓѽ∩ ¿ ¿ß»«½¡¿Γѽ∞¡δ⌐ ¬«ñ ¿½¿ setuid («Γ "set user ID" - πß-
  2134. Γá¡«ó¿Γ∞ ¬«ñ ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ »«½∞º«óáΓѽ∩, »«ñ ¬«Γ«αδ¼  »α«µÑßß  íπñÑΓ  ¿ß»«½-
  2135. ¡∩Γ∞ß∩).  ÉÑá½∞¡δ⌐ ¬«ñ ¿ñÑ¡Γ¿Σ¿µ¿απÑΓ »«½∞º«óáΓѽ∩, ¡ÑßπΘÑú« «ΓóÑΓßΓóÑ¡¡«ßΓ∞
  2136. ºá óδ»«½¡∩εΘ¿⌐ß∩ »α«µÑßß. êß»«½¡¿Γѽ∞¡δ⌐ ¬«ñ ¿ß»«½∞ºπÑΓß∩ ñ½∩ πßΓᡫ󬿠»αáó
  2137. ß«íßΓóÑ¡¡«ßΓ¿ ¡á ó¡«ó∞ ß«ºñáóáѼδÑ Σá⌐½δ, ñ½∩ »α«óÑન »αáó ñ«ßΓπ»á ¬  Σá⌐½π
  2138. ¿  αáºαÑΦÑ¡¿∩ ¡á »«ß佬π ß¿ú¡á½«ó »α«µÑßßá¼ τÑαѺ Σπ¡¬µ¿ε kill. Åα«µÑßßδ ¼«-
  2139. úπΓ ¿º¼Ñ¡∩Γ∞ ¿ß»«½¡¿Γѽ∞¡δ⌐ ¬«ñ, ºá»π߬á∩ ß »«¼«Θ∞ε Σπ¡¬µ¿¿  exec  »α«úαá¼¼π
  2140. setuid ¿½¿ ºá»π߬á∩ Σπ¡¬µ¿ε setuid ó ∩ó¡«¼ ó¿ñÑ.
  2141.     Åα«úαá¼¼á setuid »αÑñßΓáó½∩ÑΓ ß«í«⌐ ¿ß»«½¡∩Ѽδ⌐ Σá⌐½, ¿¼ÑεΘ¿⌐ ó »«½Ñ αÑ-
  2142. ª¿¼á  ñ«ßΓπ»á  πßΓá¡«ó½Ñ¡¡δ⌐  í¿Γ  setuid. è«úñá »α«µÑßß ºá»π߬áÑΓ »α«úαá¼¼π
  2143. setuid ¡á óδ»«½¡Ñ¡¿Ñ, ∩ñα« ºá»¿ßδóáÑΓ ó »«½∩, ß«ñÑαªáΘ¿Ñ αÑá½∞¡δÑ ¬«ñδ ¿ñÑ¡-
  2144. Γ¿Σ¿¬áµ¿¿, ó Γáí½¿µÑ »α«µÑß߫󠿠ó »α«ßΓαá¡ßΓóÑ »α«µÑßßá  ¬«ñ  ¿ñÑ¡Γ¿Σ¿¬áµ¿¿
  2145. ó½áñѽ∞µá Σá⌐½á. ùΓ«íδ ¬á¬-Γ« αẽ¿τáΓ∞ φΓ¿ »«½∩, ¡áº«óѼ «ñ¡« ¿º ¡¿σ, ¬«Γ«-
  2146. α«Ñ  σαá¡¿Γß∩ ó Γáí½¿µÑ »α«µÑßß«ó, ß«σαá¡Ñ¡¡δ¼ ¬«ñ«¼ ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ »«½∞º«óá-
  2147. Γѽ∩. Éáßß¼«Γα¿¼ »α¿¼Ñα, ¿½½εßΓα¿απεΘ¿⌐ αạ¿µπ ó ß«ñÑন¼«¼ φΓ¿σ »«½Ñ⌐.
  2148.     æ¿¡Γá¬ß¿ß ó맮óá ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿ setuid:
  2149.     setuid(uid)
  2150. úñÑ uid - ¡«óδ⌐ ¬«ñ ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ »«½∞º«óáΓѽ∩. ÉѺπ½∞ΓáΓ óδ»«½¡Ñ¡¿∩ Σπ¡¬µ¿¿
  2151. ºáó¿ß¿Γ «Γ ΓѬπΘÑú« º¡áτÑ¡¿∩ αÑá½∞¡«ú« ¬«ñá ¿ñÑ¡Γ¿Σ¿¬áµ¿¿. àß½¿ αÑá½∞¡δ⌐ ¬«ñ
  2152. ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ »«½∞º«óáΓѽ∩ »α«µÑßßá, óδºδóáεΘÑú« Σπ¡¬µ¿ε, π¬áºδóáÑΓ  ¡á  ßπ-
  2153. »Ñα»«½∞º«óáΓѽ∩,  ∩ñα«  ºá»¿ßδóáÑΓ  º¡áτÑ¡¿Ñ uid ó »«½∩, σαá¡∩Θ¿Ñ αÑá½∞¡δ⌐ ¿
  2154. ¿ß»«½¡¿Γѽ∞¡δ⌐ ¬«ñδ ¿ñÑ¡Γ¿Σ¿¬áµ¿¿, ó Γáí½¿µÑ »α«µÑß߫󠿠ó »α«ßΓαá¡ßΓóÑ »α«-
  2155. µÑßßá. àß½¿ φΓ« ¡Ñ Γá¬, ∩ñα« ºá»¿ßδóáÑΓ uid ó ¬áτÑßΓóÑ º¡áτÑ¡¿∩ ¿ß»«½¡¿Γѽ∞-
  2156. ¡«ú« ¬«ñá ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ ó »α«ßΓαá¡ßΓóÑ »α«µÑßßá ¿ Γ« Γ«½∞¬«  ó  Γ«¼  ß½πτáÑ,
  2157. Ñß½¿  º¡áτÑ¡¿Ñ  uid  αáó¡« º¡áτÑ¡¿ε αÑá½∞¡«ú« ¬«ñá ¿½¿ º¡áτÑ¡¿ε ß«σαá¡Ñ¡¡«ú«
  2158. ¬«ñá. é »α«Γ¿ó¡«¼ ß½πτáÑ Σπ¡¬µ¿∩  ó«ºóαáΘáÑΓ  óδºδóáεΘÑ¼π  »α«µÑßßπ  «Φ¿í¬π.
  2159. Åα«µÑßß  ¡áß½ÑñπÑΓ αÑá½∞¡δ⌐ ¿ ¿ß»«½¡¿Γѽ∞¡δ⌐ ¬«ñδ ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ π ßó«Ñú« α«-
  2160. ñ¿Γѽ∩ (ó αѺπ½∞ΓáΓÑ óδ»«½¡Ñ¡¿∩ Σπ¡¬µ¿¿ fork) ¿ ß«σαá¡∩ÑΓ ¿σ º¡áτÑ¡¿∩  »«ß½Ñ
  2161. ó맮óá Σπ¡¬µ¿¿ exec.
  2162.     ìá É¿ßπ¡¬Ñ 7.25 »α¿óÑñѡᠻα«úαá¼¼á, ñѼ«¡ßΓα¿απεΘá∩ ¿ß»«½∞º«óá¡¿Ñ Σπ¡¬-
  2163. µ¿¿ setuid. ÅαÑñ»«½«ª¿¼, τΓ« ¿ß»«½¡∩Ѽδ⌐ Σá⌐½, »«½πτÑ¡¡δ⌐ ó αѺπ½∞ΓáΓÑ Γαá¡-
  2164. ß½∩µ¿¿  ¿ßσ«ñ¡«ú«  ΓѬßΓá  »α«úαá¼¼δ,  ¿¼ÑÑΓ ó½áñѽ∞µá ß ¿¼Ñ¡Ñ¼ "maury" (¬«ñ
  2165. ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ 8319) ¿ πßΓá¡«ó½Ñ¡¡δ⌐ í¿Γ setuid; »αáó« Ñú« ¿ß»«½¡Ñ¡¿∩ »αÑñ«ß-
  2166. Γáó½Ñ¡« óßѼ »«½∞º«óáΓѽ∩¼. ä«»πßΓ¿¼  ΓᬪÑ,  τΓ«  »«½∞º«óáΓѽ¿  "mjb"  (¬«ñ
  2167. ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ 5088) ¿ "maury" ∩ó½∩εΓß∩ ó½áñѽ∞µá¼¿ Σá⌐½«ó ß ΓѼ¿ ªÑ ¿¼Ñ¡á¼¿,
  2168. ¬áªñδ⌐  ¿º  ¬«Γ«αδσ ñ«ßΓπ»Ñ¡ Γ«½∞¬« ñ½∩ τΓÑ¡¿∩ ¿ Γ«½∞¬« ßó«Ñ¼π ó½áñѽ∞µπ. é«
  2169. óαѼ∩ ¿ß»«½¡Ñ¡¿∩ »α«úαá¼¼δ »«½∞º«óáΓѽε "mjb" óδó«ñ¿Γß∩  ß½ÑñπεΘá∩  ¿¡Σ«α¼á-
  2170.  
  2171.                                     213
  2172.  
  2173. µ¿∩:
  2174.     uid 5088 euid 8319
  2175.     fdmjb -1 fdmaury 3
  2176.     after setuid(5088): uid 5088 euid 5088
  2177.     fdmjb 4 fdmaury -1
  2178.     after setuid(8319): uid 5088 euid 8319
  2179. æ¿ßΓѼ¡δÑ  Σπ¡¬µ¿¿ getuid ¿ geteuid ó«ºóαáΘáεΓ º¡áτÑ¡¿∩ αÑá½∞¡«ú« ¿ ¿ß»«½¡¿-
  2180. Γѽ∞¡«ú« ¬«ñ«ó ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ »«½∞º«óáΓѽÑ⌐ »α«µÑßßá, ñ½∩
  2181.  
  2182.     ┌────────────────────────────────────────────────────────────┐
  2183.     │ #include <fcntl.h>                                         │
  2184.     │ main()                                                     │
  2185.     │ {                                                          │
  2186.     │     int uid,euid,fdmjb,fdmaury;                            │
  2187.     │                                                            │
  2188.     │     uid = getuid();       /* »«½πτ¿Γ∞ αÑá½∞¡δ⌐ UID */      │
  2189.     │     euid = geteuid();     /* »«½πτ¿Γ∞ ¿ß»«½¡¿Γѽ∞¡δ⌐ UID */│
  2190.     │     printf("uid %d euid %d\n",uid,euid);                   │
  2191.     │                                                            │
  2192.     │     fdmjb = open("mjb",O_RDONLY);                          │
  2193.     │     fdmaury = open("maury",O_RDONLY);                      │
  2194.     │     printf("fdmjb %d fdmaury %d\n",fdmjb,fdmaury);         │
  2195.     │                                                            │
  2196.     │     setuid(uid);                                           │
  2197.     │     printf("after setuid(%d): uid %d euid %d\n",uid,       │
  2198.     │            getuid(),geteuid());                            │
  2199.     │                                                            │
  2200.     │     fdmjb = open("mjb",O_RDONLY);                          │
  2201.     │     fdmaury = open("maury",O_RDONLY);                      │
  2202.     │     printf("fdmjb %d fdmaury %d\n",fdmjb,fdmaury);         │
  2203.     │                                                            │
  2204.     │     setuid(uid);                                           │
  2205.     │     printf("after setuid(%d): uid %d euid %d\n",euid,      │
  2206.     │            getuid(),geteuid());                            │
  2207.     │ }                                                          │
  2208.     └────────────────────────────────────────────────────────────┘
  2209.  
  2210.           É¿ßπ¡«¬ 7.25. Åα¿¼Ñα óδ»«½¡Ñ¡¿∩ »α«úαá¼¼δ setuid
  2211.  
  2212. »«½∞º«óáΓѽ∩ "mjb" φΓ«, ß««ΓóÑΓßΓóÑ¡¡«, 5088 ¿ 8319. Å«φΓ«¼π »α«µÑßß ¡Ñ  ¼«-
  2213. ªÑΓ  «Γ¬αδΓ∞ Σá⌐½ "mjb" (¿í« «¡ ¿¼ÑÑΓ ¿ß»«½¡¿Γѽ∞¡δ⌐ ¬«ñ ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ »«½∞-
  2214. º«óáΓѽ∩ (8319), ¡Ñ αáºαÑΦáεΘ¿⌐ »α«¿ºó«ñ¿Γ∞ τΓÑ¡¿Ñ Σá⌐½á), ¡« ¼«ªÑΓ  «Γ¬αδΓ∞
  2215. Σá⌐½ "maury". Å«ß½Ñ ó맮óá Σπ¡¬µ¿¿ setuid, ó αѺπ½∞ΓáΓÑ óδ»«½¡Ñ¡¿∩ ¬«Γ«α«⌐ ó
  2216. »«½Ñ  ¿ß»«½¡¿Γѽ∞¡«ú« ¬«ñá ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ »«½∞º«óáΓѽ∩ ("mjb") ºá¡«ß¿Γß∩ º¡á-
  2217. τÑ¡¿Ñ αÑá½∞¡«ú« ¬«ñá ¿ñÑ¡Γ¿Σ¿¬áµ¿¿, ¡á »ÑτáΓ∞ óδó«ñ∩Γß∩ º¡áτÑ¡¿∩ ¿  Γ«ú«,  ¿
  2218. ñαπú«ú«  ¬«ñá  ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ »«½∞º«óáΓѽ∩ "mjb": «íá αáó¡δ 5088. ÆÑ»Ñα∞ »α«-
  2219. µÑßß ¼«ªÑΓ «Γ¬αδΓ∞ Σá⌐½ "mjb", »«ß¬«½∞¬π «¡ ¿ß»«½¡∩ÑΓß∩ »«ñ ¬«ñ«¼  ¿ñÑ¡Γ¿Σ¿-
  2220. ¬áµ¿¿  »«½∞º«óáΓѽ∩,  ¿¼ÑεΘÑú« »αáó« ¡á τΓÑ¡¿Ñ ¿º Σá⌐½á, ¡« ¡Ñ ¼«ªÑΓ «Γ¬αδΓ∞
  2221. Σá⌐½ "maury". ìᬫ¡Ñµ, »«ß½Ñ ºá¡ÑßÑ¡¿∩ ó »«½Ñ ¿ß»«½¡¿Γѽ∞¡«ú« ¬«ñá ¿ñÑ¡Γ¿Σ¿-
  2222. ¬áµ¿¿ º¡áτÑ¡¿∩, ß«σαá¡Ñ¡¡«ú« Σπ¡¬µ¿Ñ⌐ setuid (8319), ¡á »ÑτáΓ∞  ß¡«óá  óδó«-
  2223. ñ∩Γß∩  º¡áτÑ¡¿∩ 5088 ¿ 8319. îδ »«¬áºá½¿, Γᬿ¼ «íαẫ¼, ¬á¬ ß »«¼«Θ∞ε »α«ú-
  2224. αá¼¼δ setuid »α«µÑßß ¼«ªÑΓ ¿º¼Ñ¡∩Γ∞ º¡áτÑ¡¿Ñ ¬«ñá ¿ñÑ¡Γ¿Σ¿¬áµ¿¿  »«½∞º«óáΓÑ-
  2225. ½∩, »«ñ ¬«Γ«αδ¼ «¡ ¿ß»«½¡∩ÑΓß∩.
  2226.     é«  óαѼ∩ óδ»«½¡Ñ¡¿∩ »α«úαá¼¼δ »«½∞º«óáΓѽѼ "maury" ¡á »ÑτáΓ∞ óδó«ñ¿Γß∩
  2227. ß½ÑñπεΘá∩ ¿¡Σ«α¼áµ¿∩:
  2228.     uid 8319 euid 8319
  2229.     fdmjb -1 fdmaury 3
  2230.     after setuid(8319): uid 8319 euid 8319
  2231.     fdmjb -1 fdmaury 4
  2232.  
  2233.                                     214
  2234.  
  2235.     after setuid(8319): uid 8319 euid 8319
  2236. ÉÑá½∞¡δ⌐ ¿ ¿ß»«½¡¿Γѽ∞¡δ⌐ ¬«ñδ ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ »«½∞º«óáΓѽ∩ ó« óαѼ∩  óδ»«½¡Ñ-
  2237. ¡¿∩ »α«úαá¼¼δ «ßΓáεΓß∩ αáó¡δ 8319: »α«µÑßß ¼«ªÑΓ «Γ¬αδΓ∞ Σá⌐½ "maury", ¡« ¡Ñ
  2238. ¼«ªÑΓ «Γ¬αδΓ∞ Σá⌐½ "mjb". êß»«½¡¿Γѽ∞¡δ⌐ ¬«ñ, σαá¡∩Θ¿⌐ß∩ ó »α«ßΓαá¡ßΓóÑ »α«-
  2239. µÑßßá, ºá¡ÑßÑ¡ Γπñá ó αѺπ½∞ΓáΓÑ »«ß½Ññ¡Ñú« ¿ß»«½¡Ñ¡¿∩ Σπ¡¬µ¿¿ ¿½¿ »α«úαá¼¼δ
  2240. setuid;  Γ«½∞¬« Ñú« º¡áτÑ¡¿Ñ¼ «»αÑñѽ∩εΓß∩ »αáóá ñ«ßΓπ»á »α«µÑßßá ¬ Σá⌐½π. æ
  2241. »«¼«Θ∞ε Σπ¡¬µ¿¿ setuid ¿ß»«½¡¿Γѽ∞¡«¼π ¬«ñπ ¼«ªÑΓ  íδΓ∞  »α¿ßó«Ñ¡«  º¡áτÑ¡¿Ñ
  2242. ß«σαá¡Ñ¡¡«ú« ¬«ñá (¿º Γáí½¿µδ »α«µÑßß«ó), Γ.Ñ. Γ« º¡áτÑ¡¿Ñ, ¬«Γ«α«Ñ ¿ß»«½¡¿-
  2243. Γѽ∞¡δ⌐ ¬«ñ ¿¼Ñ½ ó ßἫ¼ ¡áτá½Ñ.
  2244.     Åα¿¼Ñα«¼  »α«úαá¼¼δ,  ¿ß»«½∞ºπεΘÑ⌐ ó맮ó ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿ setuid, ¼«ªÑΓ
  2245. ß½πª¿Γ∞ »α«úαá¼¼á αÑú¿ßΓαᵿ¿ »«½∞º«óáΓѽÑ⌐ ó  ß¿ßΓѼѠ (login).  Åáαá¼ÑΓα«¼
  2246. Σπ¡¬µ¿¿  setuid »α¿ φΓ«¼ ∩ó½∩ÑΓß∩ ¬«ñ ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ ßπ»Ñα»«½∞º«óáΓѽ∩, Γᬿ¼
  2247. «íαẫ¼, »α«úαá¼¼á login ¿ß»«½¡∩ÑΓß∩ »«ñ ¬«ñ«¼  ßπ»Ñα»«½∞º«óáΓѽ∩  ¿º  ¬«α¡∩
  2248. ß¿ßΓѼδ.  Ä¡á ºá»αáΦ¿óáÑΓ π »«½∞º«óáΓѽ∩ αẽ¿τ¡πε ¿¡Σ«α¼áµ¿ε, ¡á»α¿¼Ñα, ¿¼∩
  2249. ¿ »áα«½∞, ¿ Ñß½¿ φΓá ¿¡Σ«α¼áµ¿∩ »α¿¡¿¼áÑΓß∩  ß¿ßΓѼ«⌐,  »α«úαἼᠠºá»π߬áÑΓ
  2250. Σπ¡¬µ¿ε  setuid, τΓ«íδ πßΓá¡«ó¿Γ∞ º¡áτÑ¡¿∩ αÑá½∞¡«ú« ¿ ¿ß»«½¡¿Γѽ∞¡«ú« ¬«ñ«ó
  2251. ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ ó ß««ΓóÑΓßΓó¿¿ ß ¿¡Σ«α¼áµ¿Ñ⌐, »«ßΓπ»¿óΦÑ⌐ «Γ »«½∞º«óáΓѽ∩ (»α¿
  2252. φΓ«¼ ¿ß»«½∞ºπεΓß∩ ñá¡¡δÑ Σá⌐½á "/etc/passwd"). é ºá¬½ετÑ¡¿Ñ »α«úαἼᠠlogin
  2253. ¿¡¿µ¿¿απÑΓ ºá»π߬ ¬«¼á¡ñ¡«ú« »α«µÑßß«αá shell, ¬«Γ«αδ⌐ íπñÑΓ ¿ß»«½¡∩Γ∞ß∩ »«ñ
  2254. π¬áºá¡¡δ¼¿ »«½∞º«óáΓѽ∞߬¿¼¿ ¬«ñἿ ¿ñÑ¡Γ¿Σ¿¬áµ¿¿.
  2255.     Åα¿¼Ñα«¼ setuid-»α«úαá¼¼δ ∩ó½∩ÑΓß∩ »α«úαá¼¼á, αÑ὿ºπεΘá∩ ¬«¼á¡ñπ mkdir.
  2256. é  αáºñѽѠ 5.8  πªÑ ú«ó«α¿½«ß∞ « Γ«¼, τΓ« ß«ºñáΓ∞ ¬áΓὫú ¼«ªÑΓ Γ«½∞¬« »α«-
  2257. µÑßß, óδ»«½¡∩εΘ¿⌐ß∩ »«ñ π»αáó½Ñ¡¿Ñ¼ ßπ»Ñα»«½∞º«óáΓѽ∩. ä½∩ Γ«ú«, τΓ«íδ  »αÑ-
  2258. ñ«ßΓáó¿Γ∞  ó«º¼«ª¡«ßΓ∞  ß«ºñá¡¿∩  ¬áΓὫú«ó  »α«ßΓδ¼  »«½∞º«óáΓѽ∩¼, ¬«¼á¡ñá
  2259. mkdir íδ½á óδ»«½¡Ñ¡á ó ó¿ñÑ setuid-»α«úαá¼¼δ, »α¿¡áñ½ÑªáΘÑ⌐ ¬«α¡ε ß¿ßΓÑ¼δ  ¿
  2260. ¿¼ÑεΘÑ⌐  »αáóá  ßπ»Ñα»«½∞º«óáΓѽ∩. ìá óαѼ∩ ¿ß»«½¡Ñ¡¿∩ ¬«¼á¡ñδ mkdir »α«µÑßß
  2261. »«½πτáÑΓ »αáóá ßπ»Ñα»«½∞º«óáΓѽ∩, ß«ºñáÑΓ ¬áΓὫú, ¿ß»«½∞ºπ∩ Σπ¡¬µ¿ε  mknod,
  2262. ¿ »αÑñ«ßΓáó½∩ÑΓ »αáóá ß«íßΓóÑ¡¡«ßΓ¿ ¿ ñ«ßΓπ»á ¬ ¬áΓὫúπ ¿ßΓ¿¡¡«¼π »«½∞º«óá-
  2263. ΓÑ½ε »α«µÑßßá.
  2264.  
  2265.  
  2266.     E7.7 êçîàìàìêà ÉÇçîàÉÇ ÅÉÄûàææÇF
  2267.  
  2268.     æ  »«¼«Θ∞ε  ß¿ßΓѼ¡«⌐  Σπ¡¬µ¿¿ brk »α«µÑßß ¼«ªÑΓ πóѽ¿τ¿óáΓ∞ ¿ π¼Ñ¡∞ΦáΓ∞
  2269. αẼÑα «í½áßΓ¿ ñá¡¡δσ. æ¿¡Γá¬ß¿ß ó맮óá Σπ¡¬µ¿¿:
  2270.     brk(endds);
  2271. úñÑ endds - ßΓáαΦ¿⌐ ó¿αΓπá½∞¡δ⌐ áñαÑß «í½áßΓ¿ ñá¡¡δσ »α«µÑßßá (áñαÑß óÑασ¡Ñ⌐
  2272. úαá¡¿µδ). æ ñαπú«⌐ ßΓ«α«¡δ, »«½∞º«óáΓѽ∞ ¼«ªÑΓ «íαáΓ¿Γ∞ß∩ ¬ Σπ¡¬µ¿¿  ß½Ññπε-
  2273. Θ¿¼ «íαẫ¼:
  2274.     oldendds = sbrk(increment);
  2275. úñÑ  oldendds  -  ΓѬπΘ¿⌐  áñαÑß  óÑασ¡Ñ⌐ úαá¡¿µδ «í½áßΓ¿, increment - τ¿ß½«
  2276. íá⌐Γ, ¡á ¬«Γ«α«Ñ ¿º¼Ñ¡∩ÑΓß∩ º¡áτÑ¡¿Ñ oldendds ó αѺπ½∞ΓáΓÑ óδ»«½¡Ñ¡¿∩  Σπ¡¬-
  2277. µ¿¿.  Sbrk - φΓ« ¿¼∩ ßΓá¡ñáαΓ¡«⌐ í¿í½¿«ΓÑτ¡«⌐ »«ñ»α«úαá¼¼δ ¡á æ¿, óδºδóáεΘÑ⌐
  2278. Σπ¡¬µ¿ε brk. àß½¿ αẼÑα «í½áßΓ¿ ñá¡¡δσ  »α«µÑßßá  ó  αѺπ½∞ΓáΓÑ  óδ»«½¡Ñ¡¿∩
  2279. Σπ¡¬µ¿¿ πóѽ¿τ¿óáÑΓß∩, ó¡«ó∞ óδñѽ∩Ѽ«Ñ »α«ßΓαá¡ßΓó« ¿¼ÑÑΓ ó¿αΓπá½∞¡δÑ áñαÑ-
  2280. ßá, ß¼Ñª¡δÑ ß áñαÑßἿ πóѽ¿τ¿óáѼ«⌐ «í½áßΓ¿; Γᬿ¼ «íαẫ¼, ó¿αΓπá½∞¡«Ñ áñ-
  2281. αÑß¡«Ñ »α«ßΓαá¡ßΓó« »α«µÑßßá αáßΦ¿α∩ÑΓß∩. Åα¿ φΓ«¼ ∩ñα« »α«óÑα∩ÑΓ, ¡Ñ »αÑóδ-
  2282. ΦáÑΓ  ½¿ ¡«óδ⌐ αẼÑα »α«µÑßßá ¼á¬ß¿¼á½∞¡«-ñ«»πßΓ¿¼«Ñ º¡áτÑ¡¿Ñ, »α¿¡∩Γ«Ñ ñ½∩
  2283. ¡Ñú« ó ß¿ßΓѼÑ, á ΓᬪѠ¡Ñ ¡á¬½áñδóáÑΓß∩ ½¿ ¡«óá∩ «í½áßΓ∞ ñá¡¡δσ »α«µÑßßá ¡á
  2284. ó¿αΓπá½∞¡«Ñ áñαÑß¡«Ñ »α«ßΓαá¡ßΓó«, «ΓóÑñÑ¡¡«Ñ αá¡ÑÑ ñ½∩ ñαπú¿σ µÑ½Ñ⌐  (É¿ßπ-
  2285. ¡«¬  7.26). àß½¿ óßÑ ó »«α∩ñ¬Ñ, ∩ñα« ºá»π߬áÑΓ á½ú«α¿Γ¼ growreg, »α¿ß«Ññ¿¡∩∩
  2286. ¬ «í½áßΓ¿ ñá¡¡δσ ó¡ÑΦ¡εε »á¼∩Γ∞ (¡á»α¿¼Ñα,  Γáí½¿µδ  ßΓαá¡¿µ)  ¿  πóѽ¿τ¿óá∩
  2287. º¡áτÑ¡¿Ñ  »«½∩, «»¿ßδóáεΘÑú« αẼÑα »α«µÑßßá. é ß¿ßΓѼѠߠºá¼ÑΘÑ¡¿Ñ¼ ßΓαá¡¿µ
  2288. ∩ñα« ΓᬪѠ«Γó«ñ¿Γ »«ñ ¡«óπε «í½áßΓ∞ »α«ßΓαá¡ßΓó« «ß¡«ó¡«⌐ »á¼∩Γ¿ ¿ «í¡π½∩ÑΓ
  2289. Ñú« ß«ñÑন¼«Ñ; Ñß½¿ ßó«í«ñ¡«⌐ »á¼∩Γ¿ ¡ÑΓ,  ∩ñα«  «ßó«í«ªñáÑΓ  »á¼∩Γ∞  »πΓѼ
  2290. óδúαπº¬¿  »α«µÑßßá  (í«½ÑÑ  »«ñα«í¡« «í φΓ«¼ ¼δ »«ú«ó«α¿¼ ó ú½áóÑ 9). àß½¿ ß
  2291. »«¼«Θ∞ε Σπ¡¬µ¿¿ brk »α«µÑßß π¼Ñ¡∞ΦáÑΓ αẼÑα «í½áßΓ¿ ñá¡¡δσ, ∩ñα« «ßó«í«ªñá-
  2292. ÑΓ τáßΓ∞ αá¡ÑÑ óδñѽѡ¡«ú« áñαÑß¡«ú« »α«ßΓαá¡ßΓóá; ¬«úñá »α«µÑßß  »«»δΓáÑΓß∩
  2293. «íαáΓ¿Γ∞ß∩  ¬  ñá¡¡δ¼  »«  ó¿αΓπá½∞¡δ¼ áñαÑßá¼, »α¿¡áñ½ÑªáΘ¿¼ «ßó«í«ªñÑ¡¡«¼π
  2294.  
  2295.                                     215
  2296.  
  2297. »α«ßΓαá¡ßΓóπ, «¡ ßΓ«½¬¡ÑΓß∩ ß «Φ¿í¬«⌐ áñαÑßᵿ¿.
  2298.  
  2299.     ┌────────────────────────────────────────────────────────────┐
  2300.     │ á½ú«α¿Γ¼ brk                                               │
  2301.     │ óσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩:  ¡«óδ⌐ áñαÑß óÑασ¡Ñ⌐ úαá¡¿µδ «í½áßΓ¿   │
  2302.     │                      ñá¡¡δσ                                │
  2303.     │ óδσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩: ßΓáαδ⌐ áñαÑß óÑασ¡Ñ⌐ úαá¡¿µδ «í½áßΓ¿  │
  2304.     │                      ñá¡¡δσ                                │
  2305.     │ {                                                          │
  2306.     │     ºáí½«¬¿α«óáΓ∞ «í½áßΓ∞ ñá¡¡δσ »α«µÑßßá;                 │
  2307.     │     Ñß½¿ (αẼÑα «í½áßΓ¿ πóѽ¿τ¿óáÑΓß∩)                    │
  2308.     │          Ñß½¿ (¡«óδ⌐ αẼÑα «í½áßΓ¿ ¿¼ÑÑΓ ¡Ññ«»πßΓ¿¼«Ñ º¡á-│
  2309.     │           τÑ¡¿Ñ)                                           │
  2310.     │          {                                                 │
  2311.     │               ß¡∩Γ∞ í½«¬¿α«ó¬π ß «í½áßΓ¿;                  │
  2312.     │               óÑα¡πΓ∞ («Φ¿í¬π);                            │
  2313.     │          }                                                 │
  2314.     │     ¿º¼Ñ¡¿Γ∞ αẼÑα «í½áßΓ¿ (á½ú«α¿Γ¼ growreg);            │
  2315.     │     «í¡π½¿Γ∞ ß«ñÑন¼«Ñ »α¿ß«Ññ¿¡∩Ѽ«ú« »α«ßΓαá¡ßΓóá;      │
  2316.     │     ß¡∩Γ∞ í½«¬¿α«ó¬π ß «í½áßΓ¿ ñá¡¡δσ;                     │
  2317.     │ }                                                          │
  2318.     └────────────────────────────────────────────────────────────┘
  2319.  
  2320.             É¿ßπ¡«¬ 7.26. Ç½ú«α¿Γ¼ óδ»«½¡Ñ¡¿∩ Σπ¡¬µ¿¿ brk
  2321.  
  2322.  
  2323.     ìá É¿ßπ¡¬Ñ 7.27 »α¿óÑñÑ¡ »α¿¼Ñα »α«úαá¼¼δ, ¿ß»«½∞ºπεΘÑ⌐ Σπ¡¬µ¿ε  brk,  ¿
  2324. óδσ«ñ¡δÑ  ñá¡¡δÑ,  »«½πτÑ¡¡δÑ  ó  αѺπ½∞ΓáΓÑ ÑÑ »α«ú«¡á ¡á ¼áΦ¿¡Ñ AT&T 3B20.
  2325. éδºóáó Σπ¡¬µ¿ε signal ¿ αáß»«α∩ñ¿óΦ¿ß∞ »α¿¡¿¼áΓ∞ ß¿ú¡á½δ « ¡áαπΦÑ¡¿¿ ßÑú¼Ñ¡-
  2326. Γᵿ¿ (segmentation violation), »α«µÑßß «íαáΘáÑΓß∩ ¬ »«ñ»α«úαἼѠsbrk ¿ óδ-
  2327. ó«ñ¿Γ ¡á »ÑτáΓ∞ »Ñαó«¡áτá½∞¡«Ñ º¡áτÑ¡¿Ñ áñαÑßá óÑασ¡Ñ⌐ úαá¡¿µδ «í½áßΓ¿  ñá¡-
  2328. ¡δσ.  çáΓѼ  ó  µ¿¬½Ñ, ¿ß»«½∞ºπ∩ ßτÑΓτ¿¬ ß¿¼ó«½«ó, »α«µÑßß ºá»«½¡∩ÑΓ «í½áßΓ∞
  2329. ñá¡¡δσ ñ« ΓÑσ »«α, »«¬á ¡Ñ «íαáΓ¿Γß∩ ¬ áñαÑßπ, αáß»«½«ªÑ¡¡«¼π  ºá  »αÑñѽἿ
  2330. «í½áßΓ¿,  ΓѼ ßá¼δ¼ ñáóá∩ »«ó«ñ ñ½∩ ß¿ú¡á½á « ¡áαπΦÑ¡¿¿ ßÑú¼Ñ¡Γᵿ¿. Å«½πτ¿ó
  2331. ß¿ú¡á½, Σπ¡¬µ¿∩ «íαáí«Γ¬¿ ß¿ú¡á½á óδºδóáÑΓ »«ñ»α«úαá¼¼π sbrk ñ½∩ Γ«ú«, τΓ«íδ
  2332. »α¿ß«Ññ¿¡¿Γ∞ ¬ «í½áßΓ¿ ñ«»«½¡¿Γѽ∞¡« 256 íá⌐Γ »á¼∩Γ¿; »α«µÑßß »α«ñ«½ªáÑΓß∩ ß
  2333. Γ«τ¬¿ »αÑαδóá¡¿∩, ºá»«½¡∩∩ ¿¡Σ«α¼áµ¿Ñ⌐ ó¡«ó∞ óδñѽѡ¡«Ñ »α«ßΓαá¡ßΓó«  »á¼∩Γ¿
  2334. ¿  Γ.ñ. ìá ¼áΦ¿¡áσ ß« ßΓαá¡¿τ¡«⌐ «αúá¡¿ºáµ¿Ñ⌐ »á¼∩Γ¿, Γᬿσ ¬á¬ 3B20, ¡áí½ε-
  2335. ñáÑΓß∩ ¿¡ΓÑαÑß¡δ⌐ ΣÑ¡«¼Ñ¡. æΓαá¡¿µá ∩ó½∩ÑΓß∩ ¡á¿¼Ñ¡∞ΦÑ⌐ Ññ¿¡¿µÑ⌐  »á¼∩Γ¿,  ß
  2336. ¬«Γ«α«⌐ αáí«ΓáεΓ ¼Ñσá¡¿º¼δ á»»áαáΓ¡«⌐ ºáΘ¿Γδ, »«φΓ«¼π á»»áαáΓ¡δÑ ßαÑñßΓóá ¡Ñ
  2337. ó  ß«ßΓ«∩¡¿¿  πßΓá¡«ó¿Γ∞ «Φ¿í¬π ó úαá¡¿τ¡«⌐ ß¿Γπᵿ¿, ¬«úñá »α«µÑßß »δΓáÑΓß∩
  2338. ºá»¿ßáΓ∞ ¿¡Σ«α¼áµ¿ε »« áñαÑßá¼, »αÑóδΦáεΘ¿¼ óÑασ¡εε úαá¡¿µπ «í½áßΓ¿  ñá¡¡δσ,
  2339. ¡« »α¿¡áñ½ÑªáΘ¿¼ Γ.¡. "»«½π½Ñúá½∞¡«⌐" ßΓαá¡¿µÑ (ßΓαá¡¿µÑ, ¡Ñ »«½¡«ßΓ∞ε ºá¡∩-
  2340. Γ«⌐  «í½áßΓ∞ε ñá¡¡δσ »α«µÑßßá). ¥Γ« ó¿ñ¡« ¿º αѺπ½∞ΓáΓ«ó óδ»«½¡Ñ¡¿∩ »α«úαá¼-
  2341. ¼δ, óδóÑñÑ¡¡δσ ¡á »ÑτáΓ∞ (É¿ßπ¡«¬ 7.27): »Ñαóδ⌐ αẠ»«ñ»α«úαá¼¼á sbrk  ó«ºó-
  2342. αáΘáÑΓ  º¡áτÑ¡¿Ñ  140924,  Γ«  ÑßΓ∞ áñαÑß, ¡Ñ ñ«Γ∩ú¿óáεΘ¿⌐ 388 íá⌐Γ ñ« ¬«¡µá
  2343. ßΓαá¡¿µδ, ¬«Γ«αá∩ ¡á ¼áΦ¿¡Ñ 3B20 ¿¼ÑÑΓ αẼÑα 2 èíá⌐Γá. Äñ¡á¬« »α«µÑßß »«½π-
  2344. τ¿Γ «Φ¿í¬π Γ«½∞¬« ó Γ«¼ ß½πτáÑ, Ñß½¿ «íαáΓ¿Γß∩ ¬ ß½ÑñπεΘÑ⌐ ßΓαá¡¿µÑ  »á¼∩Γ¿,
  2345. Γ« ÑßΓ∞ ¬ ½εí«¼π áñαÑßπ, ¡áτ¿¡á∩ ß 141312. öπ¡¬µ¿∩ «íαáí«Γ¬¿ ß¿ú¡á½á »α¿íáó-
  2346. ½∩ÑΓ  ¬ áñαÑßπ óÑασ¡Ñ⌐ úαá¡¿µδ «í½áßΓ¿ 256, ñѽá∩ Ñú« αáó¡δ¼ 141180 ¿, Γᬿ¼
  2347. «íαẫ¼, «ßΓáó½∩∩ Ñú« ó »αÑñѽáσ ΓѬπΘÑ⌐  ßΓαá¡¿µδ.  æ½Ññ«óáΓѽ∞¡«,  »α«µÑßß
  2348. ΓπΓ ªÑ ß¡«óá »«½πτ¿Γ «Φ¿í¬π, óδñáó ¡á »ÑτáΓ∞ áñαÑß 141312. êß»«½¡¿ó »«ñ»α«ú-
  2349. αá¼¼π sbrk ÑΘÑ αáº, ∩ñα« óδñѽ∩ÑΓ »«ñ ñá¡¡δÑ »α«µÑßßá ¡«óπε ßΓαá¡¿µπ »á¼∩Γ¿,
  2350. ΓᬠτΓ« »α«µÑßß »«½πτáÑΓ ó«º¼«ª¡«ßΓ∞ áñαÑß«óáΓ∞ ñ«»«½¡¿Γѽ∞¡« 2 èíá⌐Γá »á¼∩-
  2351. Γ¿,  ñ« áñαÑßá 143360, ñáªÑ Ñß½¿ óÑασ¡∩∩ úαá¡¿µá «í½áßΓ¿ αáß»«½áúáÑΓß∩ ¡¿ªÑ.
  2352. Å«½πτ¿ó «Φ¿í¬π, »α«µÑßß ñ«½ªÑ¡ íπñÑΓ ó«ßѼ∞ αẠ «íαáΓ¿Γ∞ß∩  ¬  »«ñ»α«úαá¼¼Ñ
  2353. sbrk,  »αѪñÑ τѼ ß¼«ªÑΓ »α«ñ«½ª¿Γ∞ óδ»«½¡Ñ¡¿Ñ «ß¡«ó¡«⌐ »α«úαá¼¼δ. Æá¬¿¼ «í-
  2354. αẫ¼, »α«µÑßß ¼«ªÑΓ ¿¡«úñá óδσ«ñ¿Γ∞ ºá «Σ¿µ¿á½∞¡πε óÑασ¡εε úαá¡¿µπ  «í½áßΓ¿
  2355. ñá¡¡δσ, σ«Γ∩ φΓ« ¿ ¡ÑªÑ½áΓѽ∞¡δ⌐ ¼«¼Ñ¡Γ ó »αá¬Γ¿¬Ñ »α«úαá¼¼¿α«óá¡¿∩.
  2356.  
  2357.                                     216
  2358.  
  2359.     è«úñá ßΓѬ ºáñáτ¿ »ÑαÑ»«½¡∩ÑΓß∩, ∩ñα« áóΓ«¼áΓ¿τÑ߬¿ πóѽ¿τ¿óáÑΓ Ñú« αáº-
  2360. ¼Ñα,  óδ»«½¡∩∩ á½ú«α¿Γ¼, »«σ«ª¿⌐ ¡á á½ú«α¿Γ¼ Σπ¡¬µ¿¿ brk. ÅÑαó«¡áτá½∞¡« ßΓѬ
  2361. ºáñáτ¿ ¿¼ÑÑΓ αẼÑα, ñ«ßΓáΓ«τ¡δ⌐ ñ½∩ σαá¡Ñ¡¿∩ »áαá¼ÑΓα«ó Σπ¡¬µ¿¿ exec, «ñ¡á-
  2362. ¬« »α¿ óδ»«½¡Ñ¡¿¿ »α«µÑßßá
  2363.  
  2364.     ┌───────────────────────────────────────────────────────┐
  2365.     │ #include <signal.h>                                   │
  2366.     │ char *cp;                                             │
  2367.     │ int callno;                                           │
  2368.     │                                                       │
  2369.     │ main()                                                │
  2370.     │ {                                                     │
  2371.     │       char *sbrk();                                   │
  2372.     │       extern catcher();                               │
  2373.     │                                                       │
  2374.     │       signal(SIGSEGV,catcher);                        │
  2375.     │       cp = sbrk(0);                                   │
  2376.     │       printf("original brk value %u\n",cp);           │
  2377.     │       for (;;)                                        │
  2378.     │               *cp++ = 1;                              │
  2379.     │ }                                                     │
  2380.     │                                                       │
  2381.     │ catcher(signo);                                       │
  2382.     │       int signo;                                      │
  2383.     │ {                                                     │
  2384.     │       callno++;                                       │
  2385.     │       printf("caught sig %d %dth call at addr %u\n",  │
  2386.     │              signo,callno,cp);                        │
  2387.     │       sbrk(256);                                      │
  2388.     │       signal(SIGSEGV,catcher);                        │
  2389.     │ }                                                     │
  2390.     └───────────────────────────────────────────────────────┘
  2391.           ┌───────────────────────────────────────────┐
  2392.           │ original brk value 140924                 │
  2393.           │ caught sig 11 1th call at addr 141312     │
  2394.           │ caught sig 11 2th call at addr 141312     │
  2395.           │ caught sig 11 3th call at addr 143360     │
  2396.           │   ...(ëàªÑ áñαÑß »ÑτáΓáÑΓß∩ ñ« 10-ú«    │
  2397.           │       ó맮óá »«ñ»α«úαá¼¼δ sbrk)           │
  2398.           │ caught sig 11 10th call at addr 143360    │
  2399.           │ caught sig 11 11th call at addr 145408    │
  2400.           │   ...(ëàªÑ áñαÑß »ÑτáΓáÑΓß∩ ñ« 18-ú«    │
  2401.           │       ó맮óá »«ñ»α«úαá¼¼δ sbrk)           │
  2402.           │ caught sig 11 18th call at addr 145408    │
  2403.           │ caught sig 11 19th call at addr 145408    │
  2404.           │               ∙                           │
  2405.           │               ∙                           │
  2406.           └───────────────────────────────────────────┘
  2407.  
  2408.     É¿ßπ¡«¬ 7.27.  Åα¿¼Ñα »α«úαá¼¼δ,  ¿ß»«½∞ºπεΘÑ⌐ Σπ¡¬µ¿ε brk, ¿
  2409.                    αѺπ½∞ΓáΓδ ÑÑ ¬«¡Γα«½∞¡«ú« »α«ú«¡á
  2410.  
  2411.  
  2412. φëàßΓѬ ¼«ªÑΓ »ÑαÑ»«½¡¿Γ∞ß∩. ÅÑαÑ»«½¡Ñ¡¿Ñ ßΓѬᠻα¿ó«ñ¿Γ ¬ «Φ¿í¬Ñ  áñαÑßá-
  2413. µ¿¿, ßó¿ñÑΓѽ∞ßΓóπεΘÑ⌐ « »«»δΓ¬Ñ »α«µÑßßá «íαáΓ¿Γ∞ß∩ ¬ ∩τÑ⌐¬Ñ »á¼∩Γ¿ ºá »αÑ-
  2414. ñѽἿ  «ΓóÑñÑ¡¡«ú«  áñαÑß¡«ú« »α«ßΓαá¡ßΓóá. ƒñα« πßΓá¡áó½¿óáÑΓ »α¿τ¿¡π ó«º-
  2415. ¡¿¬¡«óÑ¡¿∩ «Φ¿í¬¿, ßαáó¡¿óá∩ ΓѬπΘÑÑ º¡áτÑ¡¿Ñ π¬áºáΓѽ∩ óÑαΦ¿¡δ ßΓѬá ß αáº-
  2416. ¼Ñα«¼ «í½áßΓ¿ ßΓѬá. Åα¿ αáßΦ¿αÑ¡¿¿ «í½áßΓ¿ ßΓѬá ∩ñα« ¿ß»«½∞ºπÑΓ Γ«τ¡«  Γá-
  2417. ¬«⌐ ªÑ ¼Ñσá¡¿º¼, τΓ« ¿ ñ½∩ «í½áßΓ¿ ñá¡¡δσ. ìá óδσ«ñÑ ¿º »αÑαδóá¡¿∩ »α«µÑßß
  2418.  
  2419.                                     217
  2420.  
  2421.     ┌────────────────────────────────────────────────────────────┐
  2422.     │ /* τΓÑ¡¿Ñ ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ ñ« ß¿¼ó«½á ¬«¡µá Σá⌐½á */       │
  2423.     │ while (read(stdin,buffer,numchars))                        │
  2424.     │ {                                                          │
  2425.     │     /* ß¿¡Γá¬ß¿τÑ߬¿⌐ αáºí«α ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ */           │
  2426.     │     if (/* ¬«¼á¡ñ¡á∩ ßΓ᫬á ß«ñÑαª¿Γ & */)                 │
  2427.     │            amper = 1;                                      │
  2428.     │     else                                                   │
  2429.     │            amper = 0;                                      │
  2430.     │     /* ñ½∩ ¬«¼á¡ñ, ¡Ñ ∩ó½∩εΘ¿σß∩ ¬«¡ßΓαπ¬µ¿∩¼¿ ¬«¼á¡ñ¡«ú«  │
  2431.     │        ∩ºδ¬á shell */                                      │
  2432.     │     if (fork() == 0)                                       │
  2433.     │     {                                                      │
  2434.     │            /* »ÑαÑáñαÑßᵿ∩ óó«ñá-óδó«ñá ? */              │
  2435.     │            if (/* »ÑαÑáñαÑßᵿ∩ óδó«ñá */)                 │
  2436.     │            {                                               │
  2437.     │                  fd = creat(newfile,fmask);                │
  2438.     │                  close(stdout);                            │
  2439.     │                  dup(fd);                                  │
  2440.     │                  close(fd);                                │
  2441.     │                  /* stdout ΓÑ»Ñα∞ »ÑαÑáñαÑß«óá¡ */         │
  2442.     │            }                                               │
  2443.     │            if (/* ¿ß»«½∞ºπεΓß∩ ¬á¡á½δ */)                  │
  2444.     │            {                                               │
  2445.     │                  pipe(fildes);                             │
  2446.     │                                                            │
  2447.     └────────────────────────────────────────────────────────────┘
  2448.  
  2449.             É¿ßπ¡«¬ 7.28. Äß¡«ó¡«⌐ µ¿¬½ »α«úαá¼¼δ shell
  2450.  
  2451.  
  2452. ¿¼ÑÑΓ «í½áßΓ∞ ßΓѬᠡѫíσ«ñ¿¼«ú« ñ½∩ »α«ñ«½ªÑ¡¿∩ αáí«Γδ αẼÑαá.
  2453.  
  2454.  
  2455.     E7.8 èÄîÇìäì¢ë ÅÉÄûàææÄÉ SHELLF
  2456.  
  2457.     ÆÑ»Ñα∞ π ¡áß ÑßΓ∞ ñ«ßΓáΓ«τ¡« ¼áΓÑα¿á½á, τΓ«íδ »ÑαÑ⌐Γ¿ ¬ «íΩ∩ߡѡ¿ε »α¿¡-
  2458. µ¿»«ó  αáí«Γδ  ¬«¼á¡ñ¡«ú«  »α«µÑßß«αá shell. æá¼ ¬«¼á¡ñ¡δ⌐ »α«µÑßß«α ¡á¼¡«ú«
  2459. ß½«ª¡ÑÑ, τѼ Γ«, τΓ« ¼δ « ¡Ñ¼ ºñÑß∞ íπñѼ  ¿º½áúáΓ∞,  «ñ¡á¬«  óºá¿¼«ñÑ⌐ßΓó¿Ñ
  2460. »α«µÑßß«ó ¼δ πªÑ ¼«ªÑ¼ αáßß¼«ΓαÑΓ∞ ¡á »α¿¼ÑαÑ αÑá½∞¡«⌐ »α«úαá¼¼δ. ìá É¿ßπ¡¬Ñ
  2461. 7.28  »α¿óÑñÑ¡  Σαáú¼Ñ¡Γ  «ß¡«ó¡«ú«  µ¿¬½á  »α«úαá¼¼δ shell, ñѼ«¡ßΓα¿απεΘ¿⌐
  2462. áß¿¡σα«¡¡«Ñ óδ»«½¡Ñ¡¿Ñ »α«µÑßß«ó, »ÑαѡạáτÑ¡¿Ñ óδó«ñá ¿ ¿ß»«½∞º«óá¡¿Ñ  ¬á-
  2463. ¡á½«ó.
  2464.     Shell ßτ¿ΓδóáÑΓ ¬«¼á¡ñ¡πε ßΓα«¬π ¿º Σá⌐½á ßΓá¡ñáαΓ¡«ú« óó«ñá ¿ ¿¡ΓÑα»αÑ-
  2465. Γ¿απÑΓ  ÑÑ ó ß««ΓóÑΓßΓó¿¿ ß πßΓá¡«ó½Ñ¡¡δ¼ ¡áí«α«¼ »αáó¿½. äÑß¬α¿»Γ«αδ Σá⌐½«ó
  2466. ßΓá¡ñáαΓ¡«ú«  óó«ñá  ¿  ßΓá¡ñáαΓ¡«ú«  óδó«ñá,  ¿ß»«½∞ºπѼδÑ  αÑú¿ßΓαᵿ«¡¡δ¼
  2467. shell'«¼, ¬á¬ »αá󿽫, π¬áºδóáεΓ ¡á ΓÑନ¡á½, ß ¬«Γ«α«ú« »«½∞º«óáΓѽ∞ αÑú¿ß-
  2468. Γα¿απÑΓß∩  ó  ß¿ßΓѼѠ (ß¼. ú½áóπ 10). àß½¿ shell πº¡áÑΓ ó« óóÑñÑ¡¡«⌐ ßΓ᫬Ñ
  2469. ¬«¡ßΓαπ¬µ¿ε ß«íßΓóÑ¡¡«ú« ¬«¼á¡ñ¡«ú« ∩ºδ¬á (¡á»α¿¼Ñα, «ñ¡π ¿º ¬«¼á¡ñ cd, for,
  2470. while ¿ Γ.».), «¡ ¿ß»«½¡∩ÑΓ ¬«¼á¡ñπ ßó«¿¼¿ ß¿½á¼¿, ¡Ñ  »α¿íÑúá∩  ¬  ß«ºñá¡¿ε
  2471. ¡«óδσ  »α«µÑßß«ó; ó »α«Γ¿ó¡«¼ ß½πτáÑ ¬«¼á¡ñá ¿¡ΓÑα»αÑΓ¿απÑΓß∩ ¬á¬ ¿¼∩ ¿ß»«½-
  2472. ¡∩Ѽ«ú« Σá⌐½á.
  2473.     è«¼á¡ñ¡δÑ ßΓ᫬¿ »α«ßΓÑ⌐ΦÑú« ó¿ñá ß«ñÑαªáΓ ¿¼∩ »α«úαá¼¼δ ¿ ¡Ñ߬«½∞¬« »á-
  2474. αá¼ÑΓα«ó, ¡á»α¿¼Ñα:
  2475.  
  2476.     who
  2477.     grep -n include *.c
  2478.     ls -l
  2479.  
  2480.  
  2481.                                     218
  2482.  
  2483.     ┌────────────────────────────────────────────────────────────┐
  2484.     │                  if (fork() == 0)                          │
  2485.     │                  {                                         │
  2486.     │                    /* »Ñαóá∩ ¬«¼»«¡Ñ¡Γá ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ */│
  2487.     │                    close(stdout);                          │
  2488.     │                    dup(fildes[1]);                         │
  2489.     │                    close(fildes[1]);                       │
  2490.     │                    close(fildes[0]);                       │
  2491.     │                    /* ßΓá¡ñáαΓ¡δ⌐ óδó«ñ ¡á»αáó½∩ÑΓß∩ ó ¬á- │
  2492.     │                       ¡á½ */                               │
  2493.     │                    /* ¬«¼á¡ñπ ¿ß»«½¡∩ÑΓ »«α«ªñÑ¡¡δ⌐ »α«-   │
  2494.     │                       µÑßß */                              │
  2495.     │                    execlp(command1,command1,0);            │
  2496.     │                  }                                         │
  2497.     │                  /* óΓ«αá∩ ¬«¼»«¡Ñ¡Γá ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ */  │
  2498.     │                  close(stdin);                             │
  2499.     │                  dup(fildes[0]);                           │
  2500.     │                  close(fildes[0]);                         │
  2501.     │                  close(fildes[1]);                         │
  2502.     │                  /* ßΓá¡ñáαΓ¡δ⌐ óó«ñ íπñÑΓ »α«¿ºó«ñ¿Γ∞ß∩ ¿º│
  2503.     │                     ¬á¡á½á */                              │
  2504.     │            }                                               │
  2505.     │            execve(command2,command2,0);                    │
  2506.     │     }                                                      │
  2507.     │     /* ß φΓ«ú« ¼ÑßΓá »α«ñ«½ªáÑΓß∩ óδ»«½¡Ñ¡¿Ñ α«ñ¿Γѽ∞߬«ú« │
  2508.     │      * »α«µÑßßá...                                         │
  2509.     │      * »α«µÑßß-α«ñ¿Γѽ∞ ªñÑΓ ºáóÑαΦÑ¡¿∩ óδ»«½¡Ñ¡¿∩ »«Γ«¼¬á,│
  2510.     │      * Ñß½¿ φΓ« óδΓѬáÑΓ ¿º óóÑñÑ¡¡«⌐ ßΓ᫬¿               │
  2511.     │      * /                                                   │
  2512.     │     if (amper == 0)                                        │
  2513.     │            retid = wait(&status);                          │
  2514.     │ }                                                          │
  2515.     └────────────────────────────────────────────────────────────┘
  2516.  
  2517.       É¿ßπ¡«¬ 7.28. Äß¡«ó¡«⌐ µ¿¬½ »α«úαá¼¼δ shell (»α«ñ«½ªÑ¡¿Ñ)
  2518.  
  2519.  
  2520.  
  2521. Shell "óÑΓó¿Γß∩" (fork) ¿ »«α«ªñáÑΓ ¡«óδ⌐ »α«µÑßß, ¬«Γ«αδ⌐ ¿ ºá»π߬áÑΓ »α«ú-
  2522. αá¼¼π, π¬áºá¡¡πε »«½∞º«óáΓѽѼ  ó  ¬«¼á¡ñ¡«⌐  ßΓ᫬Ñ.  É«ñ¿Γѽ∞߬¿⌐  »α«µÑßß
  2523. (shell)  ñ«ª¿ñáÑΓß∩ ºáóÑαΦÑ¡¿∩ »«Γ«¼¬á ¿ »«óΓ«α∩ÑΓ µ¿¬½ ßτ¿Γδóá¡¿∩ ß½ÑñπεΘÑ⌐
  2524. ¬«¼á¡ñδ.
  2525.     àß½¿ »α«µÑßß ºá»π߬áÑΓß∩ áß¿¡σα«¡¡« (¡á Σ«¡Ñ «ß¡«ó¡«⌐ »α«úαá¼¼δ), ¬á¬  ó
  2526. ß½ÑñπεΘѼ »α¿¼ÑαÑ
  2527.  
  2528.     nroff -mm bigdocument &
  2529.  
  2530. shell á¡á½¿º¿απÑΓ ¡á½¿τ¿Ñ ß¿¼ó«½á á¼»Ñαßá¡ñ (&) ¿ ºá¡«ß¿Γ αѺπ½∞ΓáΓ »α«óÑન
  2531. ó«  ó¡πΓαÑ¡¡εε  »ÑαѼѡ¡πε amper. é ¬«¡µÑ «ß¡«ó¡«ú« µ¿¬½á shell «íαáΘáÑΓß∩ ¬
  2532. φΓ«⌐ »ÑαѼѡ¡«⌐ ¿, Ñß½¿ «í¡áαπª¿óáÑΓ ó ¡Ñ⌐ »α¿º¡á¬ ¡á½¿τ¿∩ ß¿¼ó«½á,  ¡Ñ  óδ-
  2533. »«½¡∩ÑΓ Σπ¡¬µ¿ε wait, á ΓπΓ ªÑ »«óΓ«α∩ÑΓ µ¿¬½ ßτ¿Γδóá¡¿∩ ß½ÑñπεΘÑ⌐ ¬«¼á¡ñδ.
  2534.  
  2535.     êº α¿ßπ¡¬á ó¿ñ¡«, τΓ« »α«µÑßß-»«Γ«¼«¬ »« ºáóÑαΦÑ¡¿¿ Σπ¡¬µ¿¿ fork »«½πτá-
  2536. ÑΓ ñ«ßΓπ» ¬ ¬«¼á¡ñ¡«⌐ ßΓ᫬Ñ, »α¿¡∩Γ«⌐ shell'«¼. ä½∩ Γ«ú«, τΓ«íδ »ÑαÑáñαÑß«-
  2537. óáΓ∞ ßΓá¡ñáαΓ¡δ⌐ óδó«ñ ó Σá⌐½, ¬á¬ ó ß½ÑñπεΘѼ »α¿¼ÑαÑ
  2538.  
  2539.     nroff -mm bigdocument > output
  2540.  
  2541. »α«µÑßß-»«Γ«¼«¬  ß«ºñáÑΓ  Σá⌐½ óδó«ñá ß π¬áºá¡¡δ¼ ó ¬«¼á¡ñ¡«⌐ ßΓα«¬Ñ ¿¼Ñ¡Ñ¼;
  2542.  
  2543.                                     219
  2544.  
  2545. Ñß½¿ Σá⌐½ ¡Ñ πñáÑΓß∩ ß«ºñáΓ∞ (¡á»α¿¼Ñα, ¡Ñ αáºαÑΦÑ¡ ñ«ßΓπ» ¬ ¬áΓὫúπ), »α«-
  2546. µÑßß-»«Γ«¼«¬ ΓπΓ ªÑ ºáóÑαΦáÑΓß∩. é »α«Γ¿ó¡«¼ ß½πτáÑ »α«µÑßß-»«Γ«¼«¬ ºá¬αδóá-
  2547. ÑΓ ßΓáαδ⌐ Σá⌐½ ßΓá¡ñáαΓ¡«ú« óδó«ñá ¿ »ÑαѡạáτáÑΓ  ß  »«¼«Θ∞ε  Σπ¡¬µ¿¿  dup
  2548. ñÑß¬α¿»Γ«α φΓ«ú« Σá⌐½á ¡«ó«¼π Σá⌐½π. æΓáαδ⌐ ñÑß¬α¿»Γ«α ß«ºñá¡¡«ú« Σá⌐½á ºá¬-
  2549. αδóáÑΓß∩  ¿ ß«σαá¡∩ÑΓß∩ ñ½∩ ºá»π߬áѼ«⌐ »α«úαá¼¼δ. Å«ñ«í¡δ¼ ªÑ «íαẫ¼ shell
  2550. »ÑαѡạáτáÑΓ ¿ ßΓá¡ñáαΓ¡δ⌐ óó«ñ ¿ ßΓá¡ñáαΓ¡δ⌐ óδó«ñ «Φ¿í«¬.
  2551.  
  2552.                   ┌───────────┐
  2553.                   │   Shell   │
  2554.                   └─────┬─────┘       wait
  2555.                         │               ^
  2556.                         │               │
  2557.                   ┌─────┴─────┐       exit
  2558.                   │    wc     │
  2559.                   └─────┬─────┘       read
  2560.                         │               ^
  2561.                         │               │
  2562.                   ┌─────┴─────┐       write
  2563.                   │   ls - l  │
  2564.                   └───────────┘
  2565.  
  2566.     É¿ßπ¡«¬ 7.29.  éºá¿¼«ßó∩º∞ ¼Ñªñπ »α«µÑßßἿ, ¿ß»«½¡∩εΘ¿¼¿ ¬«-
  2567.                    ¼á¡ñ¡πε ßΓ᫬π ls -l│wc
  2568.  
  2569.  
  2570.     êº »α¿óÑñÑ¡¡«ú« ΓѬßΓá »α«úαá¼¼δ ó¿ñ¡«, ¬á¬ shell «íαáíáΓδóáÑΓ ¬«¼á¡ñ¡πε
  2571. ßΓ᫬π, ¿ß»«½∞ºπ∩ «ñ¿¡ ¬á¡á½. ä«»πßΓ¿¼, τΓ« ¬«¼á¡ñ¡á∩ ßΓα«¬á ¿¼ÑÑΓ ó¿ñ:
  2572.     ls -l│wc
  2573. ū߽Ѡ߫ºñá¡¿∩ α«ñ¿Γѽ∞߬¿¼ »α«µÑßß«¼ ¡«ó«ú« »α«µÑßßá »α«µÑßß-»«Γ«¼«¬ ß«ºñá-
  2574. ÑΓ ¬á¡á½. çáΓѼ »α«µÑßß-»«Γ«¼«¬ ß«ºñáÑΓ ßó«Ñ «ΓóÑΓó½Ñ¡¿Ñ; «¡ ¿  Ñú«  »«Γ«¼«¬
  2575. «íαáíáΓδóáεΓ »« «ñ¡«⌐ ¬«¼»«¡Ñ¡ΓÑ ¬«¼á¡ñ¡«⌐ ßΓ᫬¿. "é¡πτáΓδ⌐" »α«µÑßß ¿ß»«½-
  2576. ¡∩ÑΓ »Ñαóπε ¬«¼»«¡Ñ¡Γπ ßΓ᫬¿ (ls): «¡ ß«í¿αáÑΓß∩ óÑßΓ¿ ºá»¿ß∞ ó ¬á¡á½, »«φ-
  2577. Γ«¼π  «¡  ºá¬αδóáÑΓ ßΓáαδ⌐ Σá⌐½ ßΓá¡ñáαΓ¡«ú« óδó«ñá, »ÑαÑñáÑΓ Ñú« ñÑß¬α¿»Γ«α
  2578. ¬á¡á½π ¿ ºá¬αδóáÑΓ ßΓáαδ⌐ ñÑß¬α¿»Γ«α ºá»¿ß¿ ó ¬á¡á½, ó ¬«Γ«α«¼ (ó ñÑß¬α¿»Γ«-
  2579. αÑ) πªÑ ¡ÑΓ ¡Ñ«íσ«ñ¿¼«ßΓ¿. É«ñ¿Γѽ∞ (wc) "ó¡πτáΓ«ú«" »α«µÑßßá (ls)  ∩ó½∩ÑΓß∩
  2580. »«Γ«¼¬«¼  «ß¡«ó¡«ú«  »α«µÑßßá,  αÑ὿ºπεΘÑú«  »α«úαá¼¼π shell'á (ß¼. É¿ßπ¡«¬
  2581. 7.29). ¥Γ«Γ »α«µÑßß (wc) ºá¬αδóáÑΓ ßó«⌐ Σá⌐½ ßΓá¡ñáαΓ¡«ú« óó«ñá  ¿  »ÑαÑñáÑΓ
  2582. Ñú« ñÑß¬α¿»Γ«α ¬á¡á½π, ó αѺπ½∞ΓáΓÑ τÑú« ¬á¡á½ ßΓá¡«ó¿Γß∩ Σá⌐½«¼ ßΓá¡ñáαΓ¡«-
  2583. ú«  óó«ñá. çáΓѼ ºá¬αδóáÑΓß∩ ßΓáαδ⌐ ¿ πªÑ ¡Ñ ¡πª¡δ⌐ ñÑß¬α¿»Γ«α τΓÑ¡¿∩ ¿º ¬á-
  2584. ¡á½á ¿ ¿ß»«½¡∩ÑΓß∩ óΓ«αá∩ ¬«¼»«¡Ñ¡Γá ¬«¼á¡ñ¡«⌐ ßΓ᫬¿. Äíá »«α«ªñÑ¡¡δσ  »α«-
  2585. µÑßßá óδ»«½¡∩εΓß∩ áß¿¡σα«¡¡«, »α¿τѼ óδσ«ñ «ñ¡«ú« »α«µÑßßá »«ßΓπ»áÑΓ ¡á óσ«ñ
  2586. ñαπú«ú«.  ÆÑ¼ óαѼѡѼ «ß¡«ó¡«⌐ »α«µÑßß ñ«ª¿ñáÑΓß∩ ºáóÑαΦÑ¡¿∩ ßó«Ñú« »«Γ«¼¬á
  2587. (wc), »«ß½Ñ τÑú« »α«ñ«½ªáÑΓ ßó«ε «íδτ¡πε αáí«Γπ: »« ºáóÑαΦÑ¡¿¿ »α«µÑßßá, óδ-
  2588. »«½¡∩εΘÑú« ¬«¼á¡ñπ wc, óß∩ ¬«¼á¡ñ¡á∩  ßΓα«¬á  ∩ó½∩ÑΓß∩  «íαáí«Γá¡¡«⌐.  Shell
  2589. ó«ºóαáΘáÑΓß∩ ó µ¿¬½ ¿ ßτ¿ΓδóáÑΓ ß½ÑñπεΘπε ¬«¼á¡ñ¡πε ßΓ᫬π.
  2590.  
  2591.  
  2592.     E7.9 çÇâÉôçèÇ æêæÆàê ìÇùÇï£ì¢ë ÅÉÄûàææF
  2593.  
  2594.     ä½∩  Γ«ú«,  τΓ«íδ  »ÑαÑóÑßΓ¿ ß¿ßΓÑ¼π ¿º ¡Ñá¬Γ¿ó¡«Ñ ß«ßΓ«∩¡¿Ñ ó á¬Γ¿ó¡«Ñ,
  2595. áñ¼¿¡¿ßΓαáΓ«α óδ»«½¡∩ÑΓ »α«µÑñπαπ "¡áτá½∞¡«⌐ ºáúαπº¬¿".  ìá  αạδσ  ¼áΦ¿¡áσ
  2596. φΓá  »α«µÑñπαá  ¿¼ÑÑΓ ßó«¿ «ß«íÑ¡¡«ßΓ¿, «ñ¡á¬« ó« óßÑσ ß½πτá∩σ «¡á αÑ὿ºπÑΓ
  2597. «ñ¡π ¿ Γπ ªÑ µÑ½∞: ºáúαπº¿Γ∞ ¬«»¿ε «»Ñαᵿ«¡¡«⌐ ß¿ßΓÑ¼δ  ó  «ß¡«ó¡πε  »á¼∩Γ∞
  2598. ¼áΦ¿¡δ  ¿  ºá»πßΓ¿Γ∞  ÑÑ  ¡á ¿ß»«½¡Ñ¡¿Ñ. Äíδτ¡« »α«µÑñπαá ¡áτá½∞¡«⌐ ºáúαπº¬¿
  2599. ó¬½ετáÑΓ ó ßÑí∩ ¡Ñ߬«½∞¬« φΓừó. ÅÑαѬ½ετÑ¡¿Ñ¼ ¬½áó¿Φ ¡á »π½∞ΓÑ ¼áΦ¿¡δ  áñ-
  2600. ¼¿¡¿ßΓαáΓ«α ¼«ªÑΓ π¬áºáΓ∞ áñαÑߠ߻ѵ¿á½∞¡«⌐ »α«úαá¼¼δ á»»áαáΓ¡«⌐ ºáúαπº¬¿, á
  2601. ¼«ªÑΓ,  ¡áªáó  Γ«½∞¬«  «ñ¡π ¬½áó¿Φπ, ñáΓ∞ ¬«¼á¡ñπ ¼áΦ¿¡Ñ ºá»πßΓ¿Γ∞ »α«µÑñπαπ
  2602. ºáúαπº¬¿, ¿ß»«½¡Ñ¡¡πε ó ó¿ñÑ ¼¿¬α«»α«úαá¼¼δ. ¥Γá »α«úαἼᠼ«ªÑΓ ß«ßΓ«∩Γ∞ ¿º
  2603. ¡Ñ߬«½∞¬¿σ ¬«¼á¡ñ, »«ñú«Γáó½¿óáεΘ¿σ ºá»π߬ ñαπú«⌐ »α«úαá¼¼δ. é ß¿ßΓѼѠ UNIX
  2604.  
  2605.                                     220
  2606.  
  2607. »α«µÑñπαá ¡áτá½∞¡«⌐ ºáúαπº¬¿ ºá¬á¡τ¿óáÑΓß∩ ßτ¿Γδó᡿Ѽ ß ñ¿ß¬á ó »á¼∩Γ∞ í½«-
  2608. ¬á  ¡áτá½∞¡«⌐ ºáúαπº¬¿ (¡π½Ñó«ú« í½«¬á). Åα«úαá¼¼á, ß«ñÑαªáΘá∩ß∩ ó φΓ«¼ í½«-
  2609. ¬Ñ, ºáúαπªáÑΓ ¿º Σá⌐½«ó«⌐ ß¿ßΓѼδ ∩ñα«  Äæ  (¡á»α¿¼Ñα,  ¿º  Σá⌐½á  ß  ¿¼Ñ¡Ñ¼
  2610. "/unix" ¿½¿ ß ñαπú¿¼ ¿¼Ñ¡Ñ¼, π¬áºá¡¡δ¼ áñ¼¿¡¿ßΓαáΓ«α«¼). Å«ß½Ñ ºáúαπº¬¿ ∩ñαá
  2611. ß¿ßΓÑ¼δ  ó »á¼∩Γ∞ π»αáó½Ñ¡¿Ñ »ÑαÑñáÑΓß∩ »« ßΓáαΓ«ó«¼π áñαÑßπ ∩ñαá ¿ ∩ñα« ºá-
  2612. »π߬áÑΓß∩ ¡á óδ»«½¡Ñ¡¿Ñ (á½ú«α¿Γ¼ start, É¿ßπ¡«¬ 7.30).
  2613.     ƒñα« ¿¡¿µ¿á½¿º¿απÑΓ  ßó«¿  ó¡πΓαÑ¡¡¿Ñ  ßΓαπ¬Γπαδ  ñá¡¡δσ.  æαÑñ¿  »α«τ¿σ
  2614. ßΓαπ¬Γπα  ∩ñα« ß«ºñáÑΓ ßó∩º¡δÑ ß»¿ß¬¿ ßó«í«ñ¡δσ íπΣÑα«ó ¿ ¿¡ñѬ߫ó, σÑΦ-«τÑ-
  2615. αÑñ¿ ñ½∩ íπΣÑα«ó ¿ ¿¡ñѬ߫ó, ¿¡¿µ¿á½¿º¿απÑΓ ßΓαπ¬Γπαδ «í½áßΓÑ⌐, Γ«τ¬¿  óσ«ñá
  2616. ó Γáí½¿µδ ßΓαá¡¿µ ¿ Γ.ñ. Å« «¬«¡τá¡¿¿ φΓ«⌐ Σáºδ ∩ñα« ¼«¡Γ¿απÑΓ ¬«α¡Ñóπε Σá⌐-
  2617. ½«óπε  ß¿ßΓÑ¼π  ¿  Σ«α¼¿απÑΓ ßαÑñπ óδ»«½¡Ñ¡¿∩ ¡π½Ñó«ú« »α«µÑßßá, ßαÑñ¿ óßÑú«
  2618. »α«τÑú« ß«ºñáóá∩ »α«ßΓαá¡ßΓó« »α«µÑßßá, ¿¡¿µ¿á½¿º¿απ∩ ¡π½Ñóπε Γ«τ¬π óσ«ñá  ó
  2619. Γáí½¿µÑ »α«µÑßßá ¿ ñѽá∩ ¬«α¡Ñó«⌐ ¬áΓὫú ΓѬπΘ¿¼ ñ½∩ »α«µÑßßá.
  2620.     è«úñá  Σ«α¼¿α«óá¡¿Ñ ßαÑñδ óδ»«½¡Ñ¡¿∩ »α«µÑßßá ºá¬á¡τ¿óáÑΓß∩, ß¿ßΓѼᠿß-
  2621. »«½¡∩ÑΓß∩ πªÑ ó ó¿ñÑ ¡π½Ñó«ú« »α«µÑßßá. ìπ½Ñó«⌐ »α«µÑßß "óÑΓó¿Γß∩", ºá»π߬á∩
  2622. á½ú«α¿Γ¼ fork »α∩¼« ¿º ∩ñαá, »«ß¬«½∞¬π ßá¼ »α«µÑßß ¿ß»«½¡∩ÑΓß∩ ó αѪ¿¼Ñ  ∩ñ-
  2623.  
  2624.     ┌────────────────────────────────────────────────────────────┐
  2625.     │ á½ú«α¿Γ¼ start   /* »α«µÑñπαá ¡áτá½∞¡«⌐ ºáúαπº¬¿ ß¿ßΓѼδ */│
  2626.     │ óσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩:  «ΓßπΓßΓóπÑΓ                           │
  2627.     │ óδσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩: «ΓßπΓßΓóπÑΓ                           │
  2628.     │ {                                                          │
  2629.     │    »α«¿¡¿µ¿á½¿º¿α«óáΓ∞ óßÑ ßΓαπ¬Γπαδ ñá¡¡δσ ∩ñαá;          │
  2630.     │    »ßÑóñ«-¼«¡Γ¿α«óá¡¿Ñ ¬«α¡∩;                              │
  2631.     │    ßΣ«α¼¿α«óáΓ∞ ßαÑñπ óδ»«½¡Ñ¡¿∩ »α«µÑßßá 0;               │
  2632.     │    ß«ºñáΓ∞ »α«µÑßß 1;                                      │
  2633.     │    {                                                       │
  2634.     │        /* »α«µÑßß 1 */                                     │
  2635.     │        óδñѽ¿Γ∞ «í½áßΓ∞;                                   │
  2636.     │        »«ñ¬½ετ¿Γ∞ «í½áßΓ∞ ¬ áñαÑß¡«¼π »α«ßΓαá¡ßΓóπ »α«µÑßßá│
  2637.     │         init;                                              │
  2638.     │        πóѽ¿τ¿Γ∞ αẼÑα «í½áßΓ¿ ñ½∩ ¬«»¿α«óá¡¿∩ ó ¡ÑÑ ¿ß-  │
  2639.     │         »«½¡∩Ѽ«ú« ¬«ñá;                                   │
  2640.     │        ß¬«»¿α«óáΓ∞ ¿º »α«ßΓαá¡ßΓóá ∩ñαá ó áñαÑß¡«Ñ »α«ßΓ-  │
  2641.     │         αá¡ßΓó« »α«µÑßßá ¬«ñ »α«úαá¼¼δ, ¿ß»«½¡∩Ѽ«⌐ »α«µÑß-│
  2642.     │         ß«¼;                                               │
  2643.     │        ¿º¼Ñ¡¿Γ∞ αѪ¿¼ óδ»«½¡Ñ¡¿∩: óÑα¡πΓ∞ß∩ ¿º αѪ¿¼á ∩ñαá │
  2644.     │         ó αѪ¿¼ ºáñáτ¿;                                    │
  2645.     │        /* »α«µÑßß init ñá½ÑÑ óδ»«½¡∩ÑΓß∩ ßἫßΓ«∩Γѽ∞¡« -- │
  2646.     │         * ó αѺπ½∞ΓáΓÑ óδσ«ñá ó αѪ¿¼ ºáñáτ¿,              │
  2647.     │         * init ¿ß»«½¡∩ÑΓ Σá⌐½ "/etc/init" ¿ ßΓá¡«ó¿Γß∩     │
  2648.     │         * "«íδτ¡δ¼" »«½∞º«óáΓѽ∞߬¿¼ »α«µÑßß«¼, »α«¿ºó«ñ∩- │
  2649.     │         * Θ¿¼ «íαáΘÑ¡¿∩ ¬ ß¿ßΓѼ¡δ¼ Σπ¡¬µ¿∩¼               │
  2650.     │         */                                                 │
  2651.     │    }                                                       │
  2652.     │    /* »α«ñ«½ªÑ¡¿Ñ ¡π½Ñó«ú« »α«µÑßßá */                     │
  2653.     │    »«α«ñ¿Γ∞ »α«µÑßßδ ∩ñαá;                                 │
  2654.     │    /* ¡π½Ñó«⌐ »α«µÑßß ºá»π߬áÑΓ »α«úαá¼¼π »«ñ¬áτ¬¿, π»αáó- │
  2655.     │     * ½∩εΘπε αáß»αÑñѽѡ¿Ñ¼ áñαÑß¡«ú« »α«ßΓαá¡ßΓóá »α«µÑß- │
  2656.     │     * ß«ó ¼Ñªñπ «ß¡«ó¡«⌐ »á¼∩Γ∞ε ¿ πßΓα«⌐ßΓóἿ óδúαπº¬¿.  │
  2657.     │     * ¥Γ« íÑ߬«¡Ñτ¡δ⌐ µ¿¬½; ¡π½Ñó«⌐ »α«µÑßß «íδτ¡« »α¿«ßΓá-│
  2658.     │     * ¡áó½¿óáÑΓ ßó«ε αáí«Γπ, Ñß½¿ ¡Ñ«íσ«ñ¿¼«ßΓ¿ ó ¡Ñ¼ í«½∞-│
  2659.     │     * ΦÑ ¡ÑΓ.                                              │
  2660.     │     */                                                     │
  2661.     │    ¿ß»«½¡¿Γ∞ »α«úαá¼¼π, αÑ὿ºπεΘπε á½ú«α¿Γ¼ »«ñ¬áτ¬¿;     │
  2662.     │ }                                                          │
  2663.     └────────────────────────────────────────────────────────────┘
  2664.  
  2665.               É¿ßπ¡«¬ 7.30. Ç½ú«α¿Γ¼ ºáúαπº¬¿ ß¿ßΓѼδ
  2666.  
  2667.                                     221
  2668.  
  2669. αá. Å«α«ªñÑ¡¡δ⌐ ¡π½Ñóδ¼ ¡«óδ⌐ »α«µÑßß, »α«µÑßß 1, ºá»π߬áÑΓß∩ ó Γ«¼ ªÑ αѪ¿-
  2670. ¼Ñ  ¿ ß«ºñáÑΓ ßó«⌐ »«½∞º«óáΓѽ∞߬¿⌐ ¬«¡ΓѬßΓ, Σ«α¼¿απ∩ «í½áßΓ∞ ñá¡¡δσ ¿ »α¿-
  2671. ß«Ññ¿¡∩∩ ÑÑ ¬ ßó«Ñ¼π áñαÑß¡«¼π »α«ßΓαá¡ßΓóπ. Ä¡ πóѽ¿τ¿óáÑΓ  αẼÑα  «í½áßΓ¿
  2672. ñ« ¡áñ½ÑªáΘÑ⌐ óѽ¿τ¿¡δ ¿ »ÑαÑ»¿ßδóáÑΓ »α«úαá¼¼π ºáúαπº¬¿ ¿º áñαÑß¡«ú« »α«ßΓ-
  2673. αá¡ßΓóá ∩ñαá ó ¡«óπε «í½áßΓ∞: φΓá »α«úαá¼¼á ΓÑ»Ñα∞ íπñÑΓ «»αÑñѽ∩Γ∞ ¬«¡ΓѬßΓ
  2674. »α«µÑßßá  1. çáΓѼ »α«µÑßß 1 ß«σαá¡∩ÑΓ αÑú¿ßΓα«óδ⌐ ¬«¡ΓѬßΓ ºáñáτ¿, "ó«ºóαá-
  2675. ΘáÑΓß∩" ¿º αѪ¿¼á ∩ñαá ó αѪ¿¼ ºáñáτ¿ ¿ ¿ß»«½¡∩ÑΓ  Γ«½∞¬«  τΓ«  »ÑαÑ»¿ßá¡¡πε
  2676. »α«úαá¼¼π.  é  «Γ½¿τ¿Ñ «Γ ¡π½Ñó«ú« »α«µÑßßá, ¬«Γ«αδ⌐ ∩ó½∩ÑΓß∩ »α«µÑßß«¼ ß¿ß-
  2677. ΓѼ¡«ú« πα«ó¡∩, óδ»«½¡∩εΘ¿¼ß∩ ó αѪ¿¼Ñ ∩ñαá, »α«µÑßß 1 «Γ¡«ß¿Γß∩ ¬ »«½∞º«óá-
  2678. Γѽ∞߬«¼π πα«ó¡ε. è«ñ, ¿ß»«½¡∩Ѽδ⌐ »α«µÑßß«¼ 1, ó¬½ετáÑΓ ó ßÑí∩  ó맮ó  ß¿ß-
  2679. ΓѼ¡«⌐   Σπ¡¬µ¿¿   exec,   ºá»π߬áεΘÑ⌐  ¡á  óδ»«½¡Ñ¡¿Ñ  »α«úαá¼¼π  ¿º  Σá⌐½á
  2680. "/etc/init". Äíδτ¡« »α«µÑßß 1 ¿¼Ñ¡πÑΓß∩ »α«µÑßß«¼ init, »«ß¬«½∞¬π «¡ «ΓóÑτá-
  2681. ÑΓ ºá ¿¡¿µ¿á½¿ºáµ¿ε ¡«óδσ »α«µÑßß«ó.
  2682.     èáºá½«ß∞ íδ, ºáτѼ ∩ñα𠬫»¿α«óáΓ∞ »α«úαá¼¼π, ºá»π߬áѼπε ß »«¼«Θ∞ε Σπ¡-
  2683. ¬µ¿¿ exec, ó áñαÑß¡«Ñ »α«ßΓαá¡ßΓó« »α«µÑßßá 1 ? Ä¡ ¼«ú íδ «íαáΓ¿Γ∞ß∩ ¬ ó¡πΓ-
  2684. αÑ¡¡Ñ¼π óáα¿á¡Γπ Σπ¡¬µ¿¿ »α∩¼« ¿º ∩ñαá, «ñ¡á-
  2685. ¬«, »« ßαáó¡Ñ¡¿ε ß πªÑ «»¿ßá¡¡δ¼ á½ú«α¿Γ¼«¼ φΓ« í佫 íδ ú«αáºñ« Γαπñ¡ÑÑ αÑá-
  2686. ½¿º«óáΓ∞, ¿í« ó φΓ«¼ ß½πτáÑ Σπ¡¬µ¿¿ exec »α¿Φ½«ß∞ íδ »α«¿ºó«ñ¿Γ∞ á¡á½¿º ¿¼Ñ¡
  2687. Σá⌐½«ó ó »α«ßΓαá¡ßΓóÑ ∩ñαá, á ¡Ñ ó  »α«ßΓαá¡ßΓóÑ  ºáñáτ¿.  Å«ñ«í¡á∩  ñÑΓá½∞,
  2688. ΓαÑíπεΘá∩ß∩ Γ«½∞¬« ñ½∩ »α«µÑßßá init, πß½«ª¡¿½á íδ »α«úαá¼¼π αÑ὿ºáµ¿¿ Σπ¡-
  2689. ¬µ¿¿  exec ¿ «Γα¿µáΓѽ∞¡« «Γαế½áß∞ íδ ¡á ß¬«α«ßΓ¿ óδ»«½¡Ñ¡¿∩ Σπ¡¬µ¿¿ ó í«-
  2690. ½ÑÑ «íΘ¿σ ß½πτá∩σ.
  2691.     Åα«µÑßß init (É¿ßπ¡«¬ 7.31) óδßΓπ»áÑΓ ñ¿ß»ÑΓτÑα«¼ »α«µÑßß«ó, ¬«Γ«αδ⌐ »«-
  2692. ᫪ñáÑΓ »α«µÑßßδ, ßαÑñ¿ óßÑú« »α«τÑú« »«ºó«½∩εΘ¿Ñ  »«½∞º«óáΓÑ½ε  αÑú¿ßΓα¿α«-
  2693. óáΓ∞ß∩ ó ß¿ßΓѼÑ. ê¡ßΓαπ¬µ¿¿ « Γ«¼, ¬á¬¿Ñ »α«µÑßßδ ¡πª¡« ß«ºñáΓ∞, ßτ¿ΓδóáεΓ-
  2694. ß∩  »α«µÑßß«¼  init  ¿º  Σá⌐½á  "/etc/inittab". æΓ᫬¿ Σá⌐½á ó¬½ετáεΓ ó ßÑí∩
  2695. ¿ñÑ¡Γ¿Σ¿¬áΓ«α ß«ßΓ«∩¡¿∩ "id" («ñ¡«»«½∞º«óáΓѽ∞߬¿⌐ αѪ¿¼, ¼¡«ú«»«½∞º«óáΓѽ∞-
  2696. ߬¿⌐ ¿ Γ. ñ.), »αÑñ»α¿¡¿¼áѼ«Ñ ñÑ⌐ßΓó¿Ñ (ß¼. π»α᪡ѡ¿Ñ 7.43) ¿ ß»Ñµ¿Σ¿¬áµ¿ε
  2697. »α«úαá¼¼δ, αÑ὿ºπεΘÑ⌐ φΓ« ñÑ⌐ßΓó¿Ñ (ß¼. É¿ßπ¡«¬ 7.32). Åα«µÑßß  init  »α«ß-
  2698. ¼áΓα¿óáÑΓ  ßΓ᫬¿  Σá⌐½á ñ« ΓÑσ »«α, »«¬á ¡Ñ «í¡áαπª¿Γ ¿ñÑ¡Γ¿Σ¿¬áΓ«α ß«ßΓ«∩-
  2699. ¡¿∩, ß««ΓóÑΓßΓóπεΘÑú« Γ«¼π ß«ßΓ«∩¡¿ε, ó ¬«Γ«α«¼ ¡áσ«ñ¿Γß∩ »α«µÑßß, ¿ ß«ºñáÑΓ
  2700. »α«µÑßß, ¿ß»«½¡∩εΘ¿⌐ »α«úαá¼¼π ß π¬áºá¡¡«⌐ ß»Ñµ¿Σ¿¬áµ¿Ñ⌐. ìá»α¿¼Ñα, »α¿  ºá-
  2701. »π߬Ѡ ó  ¼¡«ú«»«½∞º«óáΓѽ∞߬«¼ αѪ¿¼Ñ (ß«ßΓ«∩¡¿Ñ 2) »α«µÑßß init «íδτ¡« »«-
  2702. ᫪ñáÑΓ  getty-»α«µÑßßδ,  π»αáó½∩εΘ¿Ñ  Σπ¡¬µ¿«¡¿α«ó᡿Ѽ ΓÑନ¡á½∞¡δσ ½¿¡¿⌐,  
  2703. óσ«ñ∩Θ¿σ  ó  ß«ßΓáó  ß¿ßΓѼδ. àß½¿ αÑú¿ßΓαᵿ∩ »«½∞º«óáΓѽ∩  »α«Φ½á πß»ÑΦ¡«,
  2704. getty-»α«µÑßß, »α«⌐ñ∩ τÑαѺ »α«µÑñπαπ login, ºá»π߬áÑΓ ¡á ¿ß»«½¡Ñ¡¿Ñ αÑú¿ßΓ-
  2705. αᵿ«¡¡δ⌐ shell (ß¼. ú½áóπ 10). ÆÑ¼ óαѼѡѼ »α«µÑßß init ¡áσ«ñ¿Γß∩ ó ß«ßΓ«-
  2706. ∩¡¿¿ «ª¿ñá¡¿∩ (wait), ¡áí½εñá∩ ºá »αѬαáΘÑ¡¿Ñ¼ ßπΘÑßΓó«óá¡¿∩ ßó«¿σ »«Γ«¼¬«ó,
  2707. á ΓᬪѠ"ó¡πτáΓδσ" »α«µÑßß«ó, «ßΓáóΦ¿σß∩ "ß¿α«ΓἿ" »«ß½Ñ ú¿íѽ¿ ßó«¿σ α«ñ¿-
  2708. ΓѽÑ⌐.
  2709.     Åα«µÑßßδ ó ß¿ßΓѼѠUNIX ¼«úπΓ íδΓ∞ ½¿í« »«½∞º«óáΓѽ∞߬¿¼¿, ½¿í« π»αáó½∩-
  2710. εΘ¿¼¿, ½¿í« ß¿ßΓѼ¡δ¼¿. ü«½∞Φ¿¡ßΓó« ¿º ¡¿σ ß«ßΓáó½∩εΓ »«½∞º«óáΓѽ∞߬¿Ñ  »α«-
  2711. µÑßßδ,  ßó∩ºá¡¡δÑ  ß »«½∞º«óáΓѽ∩¼¿ τÑαѺ ΓÑନ¡á½δ. ô»αáó½∩εΘ¿Ñ »α«µÑßßδ ¡Ñ
  2712. ßó∩ºá¡δ ß ¬«¡¬αÑΓ¡δ¼¿ »«½∞º«óáΓѽ∩¼¿, «¡¿ óδ»«½¡∩εΓ Φ¿α«¬¿⌐ ß»Ñ¬Γα ß¿ßΓѼ¡δσ
  2713. Σπ¡¬µ¿⌐, Γᬿσ ¬á¬ áñ¼¿¡¿ßΓα¿α«óá¡¿Ñ ¿ π»αáó½Ñ¡¿Ñ ßÑΓ∩¼¿, αẽ¿τ¡δÑ »Ñα¿«ñ¿-
  2714. τÑ߬¿Ñ «»Ñαᵿ¿, íπΣÑα¿ºáµ¿∩ ñá¡¡δσ ñ½∩ óδó«ñá ¡á πßΓα«⌐ßΓó« »«ßΓα«τ¡«⌐  »Ñ-
  2715. τáΓ¿ ¿ Γ.ñ. Åα«µÑßß init ¼«ªÑΓ »«α«ªñáΓ∞ π»αáó½∩εΘ¿Ñ »α«µÑßßδ, ¬«Γ«αδÑ íπñπΓ
  2716. ßπΘÑßΓó«óáΓ∞  ¡á »α«Γ∩ªÑ¡¿¿ óßÑú« óαѼѡ¿ ª¿º¡¿ ß¿ßΓѼδ, ó αẽ¿τ¡δσ ß½πτá∩σ
  2717. «¡¿ ¼«úπΓ íδΓ∞ ß«ºñá¡δ ßἿ¼¿ »«½∞º«óáΓѽ∩¼¿. Ä¡¿ »«σ«ª¿ ¡á »«½∞º«óáΓѽ∞߬¿Ñ
  2718. »α«µÑßßδ ΓѼ, τΓ« «¡¿ ¿ß»«½¡∩εΓß∩ ó αѪ¿¼Ñ ºáñáτ¿ ¿ »α¿íÑúáεΓ ¬ πß½πúá¼ ß¿ß-
  2719. ΓÑ¼δ »πΓѼ ó맮óá ß««ΓóÑΓßΓóπεΘ¿σ ß¿ßΓѼ¡δσ Σπ¡¬µ¿⌐.
  2720.     æ¿ßΓѼ¡δÑ »α«µÑßßδ óδ»«½¡∩εΓß∩ ¿ß¬½ετ¿Γѽ∞¡« ó αѪ¿¼Ñ  ∩ñαá.  Ä¡¿  ¼«úπΓ
  2721. »«α«ªñáΓ∞ß∩  ¡π½Ñóδ¼  »α«µÑßß«¼ (¡á»α¿¼Ñα, »α«µÑßß ºá¼ÑΘÑ¡¿∩ ßΓαá¡¿µ vhand),
  2722. ¬«Γ«αδ⌐ ºáΓѼ ßΓá¡«ó¿Γß∩ »α«µÑßß«¼ »«ñ¬áτ¬¿. æ¿ßΓѼ¡δÑ  »α«µÑßßδ  »«σ«ª¿  ¡á
  2723. π»αáó½∩εΘ¿Ñ  »α«µÑßßδ ΓѼ, τΓ« «¡¿ óδ»«½¡∩εΓ ß¿ßΓѼ¡δÑ Σπ¡¬µ¿¿, »α¿ φΓ«¼ «¡¿
  2724. «í½áñáεΓ í«½∞Φ¿¼¿ ó«º¼«ª¡«ßΓ∩¼¿ »α¿«α¿ΓÑΓ¡«ú« óδ»«½¡Ñ¡¿∩, »«ß¬«½∞¬π  ½ÑªáΘ¿Ñ
  2725. ó ¿σ «ß¡«óÑ »α«úαá¼¼¡δÑ ¬«ñδ ∩ó½∩εΓß∩ ß«ßΓáó¡«⌐ τáßΓ∞ε ∩ñαá. Ä¡¿ ¼«úπΓ «íαá-
  2726. ΘáΓ∞ß∩ ¬ ßΓαπ¬Γπαá¼ ñá¡¡δσ ¿ á½ú«α¿Γ¼á¼ ∩ñαá, ¡Ñ »α¿íÑúá∩ ¬ ó맮óπ ß¿ßΓѼ¡δσ
  2727. Σπ¡¬µ¿⌐,  «Γßεñá óδΓѬáÑΓ ¿σ ¿ß¬½ετ¿Γѽ∞¡«ßΓ∞. Äñ¡á¬«, «¡¿ ¡Ñ «í½áñáεΓ Γᬫ⌐
  2728.  
  2729.                                     222
  2730.  
  2731.     ┌────────────────────────────────────────────────────────────┐
  2732.     │ á½ú«α¿Γ¼ init    /* »α«µÑßß init, ó ß¿ßΓѼѠ¿¼Ñ¡πѼδ⌐      │
  2733.     │                     "»α«µÑßß 1" */                         │
  2734.     │ óσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩:  «ΓßπΓßΓóπÑΓ                           │
  2735.     │ óδσ«ñ¡á∩ ¿¡Σ«α¼áµ¿∩: «ΓßπΓßΓóπÑΓ                           │
  2736.     │ {                                                          │
  2737.     │    fd = open("/etc/inittab",O_RDONLY);                     │
  2738.     │    while (line_read(fd,buffer))                            │
  2739.     │    {                                                       │
  2740.     │        /* τ¿ΓáΓ∞ ¬áªñπε ßΓ᫬π Σá⌐½π */                    │
  2741.     │        if (invoked state != buffer state)                  │
  2742.     │            continue;       /* «ßΓáΓ∞ß∩ ó µ¿¬½Ñ while */    │
  2743.     │        /* ¡á⌐ñÑ¡ ¿ñÑ¡Γ¿Σ¿¬áΓ«α ß««ΓóÑΓßΓóπεΘÑú« ß«ßΓ«∩¡¿∩  │
  2744.     │         */                                                 │
  2745.     │        if (fork() == 0)                                    │
  2746.     │        {                                                   │
  2747.     │            execl("»α«µÑßß π¬áºá¡ ó íπΣÑαÑ");               │
  2748.     │            exit();                                         │
  2749.     │        }                                                   │
  2750.     │        /* »α«µÑßß init ¡Ñ ñ«ª¿ñáÑΓß∩ ºáóÑαΦÑ¡¿∩ »«Γ«¼¬á */ │
  2751.     │        /* ó«ºóαáΓ ó µ¿¬½ while */                          │
  2752.     │    }                                                       │
  2753.     │                                                            │
  2754.     │    while ((id = wait((int*) 0)) != -1)                     │
  2755.     │    {                                                       │
  2756.     │        /* »α«óÑα¬á ßπΘÑßΓó«óá¡¿∩ »«Γ«¼¬á;                  │
  2757.     │         * Ñß½¿ »«Γ«¼«¬ »αѬαáΓ¿½ ßπΘÑßΓó«óá¡¿Ñ, αáßß¼áΓα¿- │
  2758.     │         * óáÑΓß∩ ó«º¼«ª¡«ßΓ∞ Ñú« »ÑαѺá»π߬á */            │
  2759.     │        /* ó »α«Γ¿ó¡«¼ ß½πτáÑ, «ß¡«ó¡«⌐ »α«µÑßß »α«ßΓ« »α«- │
  2760.     │         * ñ«½ªáÑΓ αáí«Γπ */                                │
  2761.     │    }                                                       │
  2762.     │ }                                                          │
  2763.     └────────────────────────────────────────────────────────────┘
  2764.  
  2765.            É¿ßπ¡«¬ 7.31. Ç½ú«α¿Γ¼ óδ»«½¡Ñ¡¿∩ »α«µÑßßá init
  2766.  
  2767.     ┌────────────────────────────────────────────────────────────┐
  2768.     │ ö«α¼áΓ: ¿ñÑ¡Γ¿Σ¿¬áΓ«α, ß«ßΓ«∩¡¿Ñ, ñÑ⌐ßΓó¿Ñ, ß»Ñµ¿Σ¿¬áµ¿∩   │
  2769.     │         »α«µÑßßá                                           │
  2770.     │ Å«½∩ αáºñÑ½Ñ¡δ ¼Ñªñπ ß«í«⌐ ñó«ÑΓ«τ¿∩¼¿                     │
  2771.     │ è«¼¼Ñ¡Γáα¿¿ ó ¬«¡µÑ ßΓ᫬¿ ¡áτ¿¡áεΓß∩ ß ß¿¼ó«½á '#'        │
  2772.     │                                                            │
  2773.     │ co::respawn:/etc/getty console console   #è«¡ß«½∞ ó ¼áΦºá½Ñ│
  2774.     │ 46:2:respawn:/etc/getty -t 60 tty46 4800H  #¬«¼¼Ñ¡Γáα¿¿    │
  2775.     └────────────────────────────────────────────────────────────┘
  2776.  
  2777.                 É¿ßπ¡«¬ 7.32. öαáú¼Ñ¡Γ Σá⌐½á inittab
  2778.  
  2779. ªÑ ú¿í¬«ßΓ∞ε, ¬á¬ π»αáó½∩εΘ¿Ñ »α«µÑßßδ, »«ß¬«½∞¬π ñ½∩ Γ«ú«, τΓ«íδ ó¡ÑßΓ¿ ¿º-
  2780. ¼Ñ¡Ñ¡¿∩ ó ¿σ »α«úαá¼¼δ, »α¿ñÑΓß∩ ÑΘÑ αẠ»ÑαѬ«¼»¿½¿α«óáΓ∞ ∩ñα«.
  2781.  
  2782.  
  2783.     E7.10 é¢éÄä¢F
  2784.  
  2785.     é ñá¡¡«⌐ ú½áóÑ í뫨 αáßß¼«ΓαÑ¡δ ß¿ßΓѼ¡δÑ Σπ¡¬µ¿¿,  »αÑñ¡áº¡áτÑ¡¡δÑ  ñ½∩
  2786. αáí«Γδ  ß ¬«¡ΓѬßΓ«¼ »α«µÑßßá ¿ ñ½∩ π»αáó½Ñ¡¿∩ óδ»«½¡Ñ¡¿Ñ¼ »α«µÑßßá. æ¿ßΓѼ-
  2787. ¡á∩ Σπ¡¬µ¿∩ fork ß«ºñáÑΓ ¡«óδ⌐ »α«µÑßß, ¬«»¿απ∩ ñ½∩ ¡Ñú« ß«ñÑন¼«Ñ óßÑσ «í-
  2788. ½áßΓÑ⌐, »«ñ¬½ετÑ¡¡δσ ¬ α«ñ¿Γѽ∞߬«¼π »α«µÑßßπ. Äß«íÑ¡¡«ßΓ∞ αÑ὿ºáµ¿¿  Σπ¡¬-
  2789. µ¿¿ fork ß«ßΓ«¿Γ ó Γ«¼, τΓ« «¡á óδ»«½¡∩ÑΓ ¿¡¿µ¿á½¿ºáµ¿ε ß«σαá¡Ñ¡¡«ú« αÑú¿ßΓ-
  2790.  
  2791.                                     223
  2792.  
  2793. α«ó«ú«  ¬«¡ΓѬßΓá »«α«ªñÑ¡¡«ú« »α«µÑßßá, Γᬿ¼ «íαẫ¼ φëà»α«µÑßß ¡áτ¿¡áÑΓ
  2794. óδ»«½¡∩Γ∞ß∩, ¡Ñ ñ«ª¿ñá∩ß∞ ºáóÑαΦÑ¡¿∩ Σπ¡¬µ¿¿, ¿ πªÑ ó ΓѽѠΣπ¡¬µ¿¿  ¡áτ¿¡áÑΓ
  2795. «ß«º¡áóáΓ∞  ßó«ε »αÑñ¡áº¡áτÑ¡¿Ñ ¬á¬ »«Γ«¼¬á. éßÑ »α«µÑßßδ ºáóÑαΦáεΓ ßó«Ñ óδ-
  2796. »«½¡Ñ¡¿Ñ óδº«ó«¼ Σπ¡¬µ¿¿ exit, ¬«Γ«αá∩ «Γß«Ññ¿¡∩ÑΓ «í½áßΓ¿ »α«µÑßßá ¿  »«ßδ-
  2797. ½áÑΓ Ñú« α«ñ¿Γѽε ß¿ú¡á½ "ú¿íѽ∞ »«Γ«¼¬á". Åα«µÑßß-α«ñ¿Γѽ∞ ¼«ªÑΓ ß«ó¼ÑßΓ¿Γ∞
  2798. ¼«¼Ñ¡Γ »α«ñ«½ªÑ¡¿∩ ßó«Ñú« óδ»«½¡Ñ¡¿∩ ß ¼«¼Ñ¡Γ«¼ ºáóÑαΦÑ¡¿∩ »α«µÑßßá-»«Γ«¼¬á,
  2799. ¿ß»«½∞ºπ∩  ß¿ßΓѼ¡πε Σπ¡¬µ¿ε wait. æ¿ßΓѼ¡á∩ Σπ¡¬µ¿∩ exec ñáÑΓ »α«µÑßßπ ó«º-
  2800. ¼«ª¡«ßΓ∞ ºá»π߬áΓ∞ ¡á óδ»«½¡Ñ¡¿Ñ ñαπú¿Ñ »α«úαá¼¼δ, ¡á¬½áñδóá∩ ß«ñÑন¼«Ñ ¿ß-
  2801. »«½¡∩Ѽ«ú« Σá⌐½á ¡á ßó«Ñ áñαÑß¡«Ñ »α«ßΓαá¡ßΓó«.  ƒñα«  «Γß«Ññ¿¡∩ÑΓ  «í½áßΓ¿,
  2802. αá¡ÑÑ  ºá¡¿¼áѼδÑ »α«µÑßß«¼, ¿ ¡áº¡áτáÑΓ »α«µÑßßπ ¡«óδÑ «í½áßΓ¿ ó ß««ΓóÑΓßΓ-
  2803. ó¿¿ ß »«ΓαÑí¡«ßΓ∩¼¿ ¿ß»«½¡∩Ѽ«ú« Σá⌐½á.  æ«ó¼ÑßΓ¡«Ñ  ¿ß»«½∞º«óá¡¿Ñ  «í½áßΓÑ⌐
  2804. ¬«¼á¡ñ  ¿ ¡á½¿τ¿Ñ αѪ¿¼á "sticky-bit" ñáεΓ ó«º¼«ª¡«ßΓ∞ í«½ÑÑ αᵿ«¡á½∞¡« ¿ß-
  2805. »«½∞º«óáΓ∞ »á¼∩Γ∞ ¿ φ¬«¡«¼¿Γ∞ óαѼ∩, ºáΓαáτ¿óáѼ«Ñ ¡á »«ñú«Γ«ó¬π  ¬  ºá»π߬π
  2806. »α«úαá¼¼.  Åα«ßΓδ¼ »«½∞º«óáΓѽ∩¼ »αÑñ«ßΓáó½∩ÑΓß∩ ó«º¼«ª¡«ßΓ∞ »«½πτáΓ∞ »α¿ó¿-
  2807. ½Ñú¿¿ ñαπú¿σ »«½∞º«óáΓѽÑ⌐, ñáªÑ ßπ»Ñα»«½∞º«óáΓѽ∩,  í½áú«ñáα∩  «íαáΘÑ¡¿ε  ¬
  2808. πß½πúá¼  ß¿ßΓѼ¡«⌐  Σπ¡¬µ¿¿  setuid ¿ setuid-»α«úαá¼¼. æ »«¼«Θ∞ε Σπ¡¬µ¿¿ brk
  2809. »α«µÑßß ¼«ªÑΓ ¿º¼Ñ¡∩Γ∞ αẼÑα ßó«Ñ⌐ «í½áßΓ¿ ñá¡¡δσ. öπ¡¬µ¿∩ signal ñáÑΓ »α«-
  2810. µÑßßἠ󫺼«ª¡«ßΓ∞ π»αáó½∩Γ∞ ßó«Ñ⌐ αÑᬵ¿Ñ⌐ ¡á »«ßΓπ»áεΘ¿Ñ ß¿ú¡á½δ. Åα¿  »«-
  2811. ½πτÑ¡¿¿  ß¿ú¡á½á »α«¿ºó«ñ¿Γß∩ «íαáΘÑ¡¿Ñ ¬ ß»Ñµ¿á½∞¡«⌐ Σπ¡¬µ¿¿ «íαáí«Γ¬¿ ß¿ú-
  2812. ¡á½á ß ó¡ÑßÑ¡¿Ñ¼ ß««ΓóÑΓßΓóπεΘ¿σ ¿º¼Ñ¡Ñ¡¿⌐ ó ßΓѬ ºáñáτ¿ ¿ ó ß«σαá¡Ñ¡¡δ⌐ αÑ-
  2813. ú¿ßΓα«óδ⌐ ¬«¡ΓѬßΓ ºáñáτ¿. Åα«µÑßßδ ¼«úπΓ ßἿ »«ßδ½áΓ∞  ß¿ú¡á½δ,  ¿ß»«½∞ºπ∩
  2814. ß¿ßΓѼ¡πε  Σπ¡¬µ¿ε  kill, «¡¿ ¼«úπΓ ΓᬪѠ¬«¡Γα«½¿α«óáΓ∞ »«½πτÑ¡¿Ñ ß¿ú¡á½«ó,
  2815. »αÑñ¡áº¡áτÑ¡¡δσ úαπ»»Ñ »α«µÑßß«ó, »α¿íÑúá∩ ¬ πß½πúá¼ Σπ¡¬µ¿¿ setpgrp.
  2816.     è«¼á¡ñ¡δ⌐ »α«µÑßß«α shell ¿ »α«µÑßß ¡áτá½∞¡«⌐ ºáúαπº¬¿  init  ¿ß»«½∞ºπεΓ
  2817. ßΓá¡ñáαΓ¡δÑ «íαáΘÑ¡¿∩ ¬ ß¿ßΓѼ¡δ¼ Σπ¡¬µ¿∩¼, »α«¿ºó«ñ∩ ¡áí«α «»Ñαᵿ⌐, ó ñαπ-
  2818. ú¿σ  ß¿ßΓѼáσ «íδτ¡« óδ»«½¡∩Ѽδσ ∩ñα«¼. Shell ¿¡ΓÑα»αÑΓ¿απÑΓ ¬«¼á¡ñδ »«½∞º«-
  2819. óáΓѽ∩, »ÑαѡạáτáÑΓ ßΓá¡ñáαΓ¡δÑ Σá⌐½δ óó«ñá-óδó«ñá ñá¡¡δσ ¿ óδñáτ¿ «Φ¿í«¬,
  2820. »«α«ªñáÑΓ »α«µÑßßδ, «αúá¡¿ºπÑΓ ¬á¡á½δ ¼Ñªñ𠻫᫪ñÑ¡¡δ¼¿ »α«µÑßßἿ, ß¿¡σα«-
  2821. ¡¿º¿απÑΓ ßó«Ñ óδ»«½¡Ñ¡¿Ñ ß φΓ¿¼¿ »α«µÑßßἿ ¿ Σ«α¼¿απÑΓ  ¬«ñδ,  ó«ºóαáΘáѼδÑ
  2822. ¬«¼á¡ñἿ.  Åα«µÑßß init Γ«ªÑ »«α«ªñáÑΓ αẽ¿τ¡δÑ »α«µÑßßδ, ó τáßΓ¡«ßΓ¿, π»-
  2823. αáó½∩εΘ¿Ñ αáí«Γ«⌐ »«½∞º«óáΓѽ∩ ºá ΓÑନ¡á½«¼. è«úñá Γᬫ⌐ »α«µÑßß ºáóÑαΦáÑΓ-
  2824. ß∩, init ¼«ªÑΓ »«α«ñ¿Γ∞ ñ½∩ óδ»«½¡Ñ¡¿∩ Γ«⌐ ªÑ ßἫ⌐ Σπ¡¬µ¿¿  ÑΘÑ  «ñ¿¡  »α«-
  2825. µÑßß, Ñß½¿ φΓ« óδΓѬáÑΓ ¿º ¿¡Σ«α¼áµ¿¿ Σá⌐½á "/etc/inittab".
  2826.  
  2827.  
  2828.     E7.11 ôÅÉÇåìàìêƒF
  2829.  
  2830.   1. çá»πßΓ¿ΓÑ ß ΓÑନ¡á½á »α«úαá¼¼π, »α¿óÑñÑ¡¡πε ¡á É¿ßπ¡¬Ñ 7.33. ÅÑαÑáñαÑ-
  2831.      ßπ⌐ΓÑ  ßΓá¡ñáαΓ¡δ⌐  óδó«ñ ñá¡¡δσ ó Σá⌐½ ¿ ßαáó¡¿ΓÑ αѺπ½∞ΓáΓδ ¼Ñªñπ ß«-
  2832.      í«⌐.
  2833.               ┌────────────────────────────────────┐
  2834.               │ main()                             │
  2835.               │ {                                  │
  2836.               │     printf("hello\n");             │
  2837.               │     if (fork() == 0)               │
  2838.               │         printf("world\n");         │
  2839.               │ }                                  │
  2840.               └────────────────────────────────────┘
  2841.  
  2842.          É¿ßπ¡«¬ 7.33. Åα¿¼Ñα ¼«ñπ½∩, ß«ñÑαªáΘÑú« ó맮ó Σπ¡¬µ¿¿ fork ¿ «íαá-
  2843.                         ΘÑ¡¿Ñ ¬ ßΓá¡ñáαΓ¡«¼π óδó«ñπ
  2844.  
  2845.   2. ÉáºíÑα¿ΓÑß∞ ó ¼Ñσá¡¿º¼Ñ αáí«Γδ »α«úαá¼¼δ, »α¿óÑñÑ¡¡«⌐ ¡á É¿ßπ¡¬Ñ  7.34,
  2846.      ¿ ßαáó¡¿ΓÑ ÑÑ αѺπ½∞ΓáΓδ ß αѺπ½∞ΓáΓἿ »α«úαá¼¼δ ¡á É¿ßπ¡¬Ñ 7.4.
  2847.   3.  àΘÑ αẠ«íαáΓ¿¼ß∩ ¬ »α«úαá¼¼Ñ, »α¿óÑñÑ¡¡«⌐ ¡á É¿ßπ¡¬Ñ 7.5 ¿ »«¬áºδóáε-
  2848.      ΘÑ⌐, ¬á¬ ñóá »α«µÑßßá «í¼Ñ¡¿óáεΓß∩ ß««íΘÑ¡¿∩¼¿, ¿ß»«½∞ºπ∩ ß»áαÑ¡¡δÑ ¬á-
  2849.      ¡á½δ. ùΓ« »α«¿º«⌐ñÑΓ, Ñß½¿ «¡¿ »«»δΓáεΓß∩ óÑßΓ¿ «í¼Ñ¡ ß««íΘÑ¡¿∩¼¿,  ¿ß-
  2850.      »«½∞ºπ∩ «ñ¿¡ ¬á¡á½ ?
  2851.   4. é«º¼«ª¡á ½¿ »«ΓÑα∩ ¿¡Σ«α¼áµ¿¿ ó ß½πτáÑ, ¬«úñá »α«µÑßß »«½πτáÑΓ ¡Ñ߬«½∞-
  2852.  
  2853.                                     224
  2854.  
  2855.      ¬« ß¿ú¡á½«ó »αѪñÑ τѼ Ñ¼π »αÑñ«ßΓáó½∩ÑΓß∩ ó«º¼«ª¡«ßΓ∞ «ΓαÑáú¿α«óáΓ∞ ¡á
  2856.      ¡¿σ ¡áñ½ÑªáΘ¿¼ «íαẫ¼ ? (Éáßß¼«Γα¿ΓÑ ß½πτá⌐, ¬«úñá »α«µÑßß »«ñßτ¿Γδóá-
  2857.      ÑΓ  ¬«½¿τÑßΓó« »«½πτÑ¡¡δσ ß¿ú¡á½«ó « »αÑαδóá¡¿¿.) àßΓ∞ ½¿ ¡Ñ«íσ«ñ¿¼«ßΓ∞
  2858.      ó αÑΦÑ¡¿¿ φΓ«⌐ »α«í½Ñ¼δ ?
  2859.   5. Ä»¿Φ¿ΓÑ ¼Ñσá¡¿º¼ αáí«Γδ ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿ kill.
  2860.   6. Åα«µÑßß ó »α«úαἼѠ¡á É¿ßπ¡¬Ñ 7.35 »α¿¡¿¼áÑΓ ß¿ú¡á½δ Γ¿»á "ú¿íѽ∞  »«-
  2861.      Γ«¼¬á" ¿ πßΓá¡áó½¿óáÑΓ Σπ¡¬µ¿ε «íαáí«Γ¬¿ ß¿ú¡á½«ó ó ¿ßσ«ñ¡«Ñ ß«ßΓ«∩¡¿Ñ.
  2862.      ùΓ« »α«¿ßσ«ñ¿Γ »α¿ óδ»«½¡Ñ¡¿¿ »α«úαá¼¼δ ?
  2863.   7. è«úñá »α«µÑßß »«½πτáÑΓ ß¿ú¡á½δ «»αÑñѽѡ¡«ú« Γ¿»á ¿ ¡Ñ «íαáíáΓδóáÑΓ ¿σ,
  2864.      ∩ñα«  ñá¼»¿απÑΓ  «íαẠ»α«µÑßßá ó Γ«¼ ó¿ñÑ, ¬«Γ«αδ⌐ íδ½ π ¡Ñú« ó ¼«¼Ñ¡Γ
  2865.      »«½πτÑ¡¿∩ ß¿ú¡á½á. ƒñα« ß«ºñáÑΓ ó ΓѬπΘѼ ¬áΓὫúÑ »α«µÑßßá Σá⌐½ ß ¿¼Ñ-
  2866.      ¡Ñ¼ "core" ¿ ¬«»¿απÑΓ ó ¡Ñú«  »α«ßΓαá¡ßΓó«  »α«µÑßßá,  «í½áßΓ¿  ¬«¼á¡ñ,
  2867.      ñá¡¡δσ  ¿ ßΓѬá. é»«ß½ÑñßΓó¿¿ »«½∞º«óáΓѽ∞ ¼«ªÑΓ ΓΘáΓѽ∞¡« ¿ºπτ¿Γ∞ ñá¼»
  2868.      «íαáºá »α«µÑßßá ß »«¼«Θ∞ε ßΓá¡ñáαΓ¡δσ ßαÑñßΓó  «Γ½áñ¬¿.  Ä»¿Φ¿ΓÑ  á½ú«-
  2869.      α¿Γ¼,  ¬«Γ«α«¼π ¡á éáΦ óºú½∩ñ ñ«½ª¡« ß½Ññ«óáΓ∞ ∩ñα« ó »α«µÑßßÑ ß«ºñá¡¿∩
  2870.      Σá⌐½á "core". ùΓ« ¡πª¡« »αÑñ»α¿¡∩Γ∞ ó Γ«¼ ß½πτáÑ, Ñß½¿ ó ΓѬπΘѼ  ¬áΓá-
  2871.      ½«úÑ  Σá⌐½  ß Γᬿ¼ ¿¼Ñ¡Ñ¼ πªÑ ßπΘÑßΓóπÑΓ ? èᬠñ«½ª¡« óÑßΓ¿ ßÑí∩ ∩ñα«,
  2872.      ¬«úñá ó «ñ¡«¼ ¿ Γ«¼ ªÑ ¬áΓὫúÑ ñá¼»¿απεΓ ßó«¿ «íαáºδ  ßαáºπ  ¡Ñ߬«½∞¬«
  2873.      »α«µÑßß«ó?
  2874.   8.  àΘÑ  αẠ «íαáΓ¿¼ß∩  ¬ »α«úαἼѠ(É¿ßπ¡«¬ 7.12), «»¿ßδóáεΘÑ⌐, ¬á¬ «ñ¿¡
  2875.      »α«µÑßß ºáíαáßδóáÑΓ ñαπú«⌐ »α«µÑßß ß¿ú¡á½á¼¿,  ¬«Γ«αδÑ  »α¿¡¿¼áεΓß∩  ¿σ
  2876.      áñαÑßáΓ«¼.  Å«ñπ¼á⌐ΓÑ,  τΓ« »α«¿º«Φ½« íδ ó Γ«¼ ß½πτáÑ, Ñß½¿ íδ á½ú«α¿Γ¼
  2877.      «íαáí«Γ¬¿ ß¿ú¡á½«ó íδ½ »ÑαÑαáí«Γá¡ ó ½εí«¼ ¿º ß½ÑñπεΘ¿σ ¡á»αáó½Ñ¡¿⌐:
  2878.  
  2879.     ┌────────────────────────────────────────────────────────────┐
  2880.     │ #include <fcntl.h>                                         │
  2881.     │ int fdrd,fdwt;                                             │
  2882.     │ char c;                                                    │
  2883.     │                                                            │
  2884.     │ main(argc,argv)                                            │
  2885.     │      int argc;                                             │
  2886.     │      char *argv[];                                         │
  2887.     │ {                                                          │
  2888.     │      if (argc != 3)                                        │
  2889.     │          exit(1);                                          │
  2890.     │      fork();                                               │
  2891.     │                                                            │
  2892.     │      if ((fdrd = open(argv[1],O_RDONLY)) == -1)            │
  2893.     │          exit(1);                                          │
  2894.     │      if (((fdwt = creat(argv[2],0666)) == -1) &&           │
  2895.     │                   ((fdwt = open(argv[2],O_WRONLY)) == -1)) │
  2896.     │          exit(1);                                          │
  2897.     │      rdwrt();                                              │
  2898.     │ }                                                          │
  2899.     │ rdwrt()                                                    │
  2900.     │ {                                                          │
  2901.     │      for (;;)                                              │
  2902.     │      {                                                     │
  2903.     │          if (read(fdrd,&c,1) != 1)                         │
  2904.     │                   return;                                  │
  2905.     │          write(fdwt,&c,1);                                 │
  2906.     │      }                                                     │
  2907.     │ }                                                          │
  2908.     └────────────────────────────────────────────────────────────┘
  2909.     É¿ßπ¡«¬ 7.34.  Åα¿¼Ñα »α«úαá¼¼δ, ó ¬«Γ«α«⌐ »α«µÑßß-α«ñ¿Γѽ∞ ¿
  2910.                    »α«µÑßß-»«Γ«¼«¬ ¡Ñ αáºñѽ∩εΓ ñ«ßΓπ» ¬ Σá⌐½π
  2911.  
  2912.      * ∩ñα« ¡Ñ ºá¼Ñ¡∩ÑΓ Σπ¡¬µ¿ε «íαáí«Γ¬¿ ß¿ú¡á½«ó ñ« ΓÑσ »«α, »«¬á  »«½∞º«-
  2913.        óáΓѽ∞ ∩ó¡« ¡Ñ »«ΓαÑíπÑΓ φΓ«ú«;
  2914.  
  2915.                                     225
  2916.  
  2917.      * ∩ñα« ºáßΓáó½∩ÑΓ »α«µÑßß ¿ú¡«α¿α«óáΓ∞ ß¿ú¡á½δ ñ« ΓÑσ »«α, »«¬á »«½∞º«-
  2918.        óáΓѽ∞ ¡Ñ «íαáΓ¿Γß∩ ¬ Σπ¡¬µ¿¿ signal ó¡«ó∞.
  2919.   9. ÅÑαÑαáí«Γá⌐ΓÑ á½ú«α¿Γ¼ «íαáí«Γ¬¿ ß¿ú¡á½«ó Γá¬, τΓ«íδ ∩ñα« áóΓ«¼áΓ¿τÑ߬¿
  2920.      »ÑαÑ¡áßΓαá¿óὫ  »α«µÑßß  ¡á ¿ú¡«α¿α«óá¡¿Ñ óßÑσ »«ß½ÑñπεΘ¿σ »«ßΓπ»½Ñ¡¿⌐
  2921.      ß¿ú¡á½«ó »« ó«ºóαáΘÑ¡¿¿ ¿º Σπ¡¬µ¿¿, «íαáíáΓδóáεΘÑ⌐  ¿σ.  èᬿ¼  «íαẫ¼
  2922.      ∩ñα« ¼«ªÑΓ πº¡áΓ∞ « ºáóÑαΦÑ¡¿¿ Σπ¡¬µ¿¿ «íαáí«Γ¬¿ ß¿ú¡á½«ó, óδ»«½¡∩εΘÑ⌐-
  2923.      ß∩  ó  αѪ¿¼Ñ  ºáñáτ¿  ?  Æá¬«ú« α«ñá »ÑαÑ¡áßΓα«⌐¬á »α¿í½¿º¿½á íδ ¡áß ¬
  2924.      Γαá¬Γ«ó¬Ñ ß¿ú¡á½«ó ó ß¿ßΓѼѠBSD.
  2925. *10. àß½¿ »α«µÑßß »«½πτáÑΓ ß¿ú¡á½, ¡áσ«ñ∩ß∞ ó ß«ßΓ«∩¡¿¿ »α¿«ßΓá¡«óá ó« óαѼ∩
  2926.      óδ»«½¡Ñ¡¿∩ ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿ ß ñ«»π߬áεΘ¿¼ »αÑαδóá¡¿∩  »α¿«α¿ΓÑΓ«¼,  «¡
  2927.      óδσ«ñ¿Γ  ¿º  Σπ¡¬µ¿¿ »« á½ú«α¿Γ¼π longjump. ƒñα« »α«¿ºó«ñ¿Γ ¡Ñ«íσ«ñ¿¼δÑ
  2928.      πßΓᡫ󬿠ñ½∩ ºá»π߬á Σπ¡¬µ¿¿ «íαáí«Γ¬¿ ß¿ú¡á½á; ¬«úñá  »α«µÑßß  óδ⌐ñÑΓ
  2929.      ¿º Σπ¡¬µ¿¿ «íαáí«Γ¬¿ ß¿ú¡á½á, ó óÑαß¿¿ V φΓ« íπñÑΓ óδú½∩ñÑΓ∞ Γá¬, ß½«ó-
  2930.      ¡«  «¡ óÑα¡π½ß∩ ¿º ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿ ß »α¿º¡á¬«¼ «Φ¿í¬¿ (¬á¬ íδ »αÑαóáó
  2931.      ßó«Ñ óδ»«½¡Ñ¡¿Ñ). é ß¿ßΓѼѠBSD ß¿ßΓѼ¡á∩ Σπ¡¬µ¿∩ ó φΓ«¼ ß½πτáÑ áóΓ«¼á-
  2932.      Γ¿τÑ߬¿ »ÑαѺá»π߬áÑΓß∩. èᬿ¼ «íαẫ¼ ¼«ª¡« αÑ὿º«óáΓ∞ φë༫¼Ñ¡Γ  ó
  2933.      ¡áΦÑ⌐ ß¿ßΓѼÑ?
  2934.  
  2935.     ┌────────────────────────────────────────────────────────────┐
  2936.     │ #include <signal.h>                                        │
  2937.     │ main()                                                     │
  2938.     │ {                                                          │
  2939.     │      extern catcher();                                     │
  2940.     │                                                            │
  2941.     │      signal(SIGCLD,catcher);                               │
  2942.     │      if (fork() == 0)                                      │
  2943.     │           exit();                                          │
  2944.     │      /* »áπºá ñ« ¼«¼Ñ¡Γá »«½πτÑ¡¿∩ ß¿ú¡á½á */              │
  2945.     │      pause();                                              │
  2946.     │ }                                                          │
  2947.     │                                                            │
  2948.     │ catcher()                                                  │
  2949.     │ {                                                          │
  2950.     │      printf("»α«µÑßß-α«ñ¿Γѽ∞ »«½πτ¿½ ß¿ú¡á½\n");          │
  2951.     │      signal(SIGCLD,catcher);                               │
  2952.     │ }                                                          │
  2953.     └────────────────────────────────────────────────────────────┘
  2954.  
  2955.     É¿ßπ¡«¬ 7.35.  Åα«úαá¼¼á, ó ¬«Γ«α«⌐ »α«µÑßß »α¿¡¿¼áÑΓ ß¿ú¡á½δ
  2956.                    Γ¿»á "ú¿íѽ∞ »«Γ«¼¬á"
  2957.  
  2958.  11.  é  Γαáñ¿µ¿«¡¡«⌐  αÑ὿ºáµ¿¿ ¬«¼á¡ñδ mkdir ñ½∩ ß«ºñá¡¿∩ ¡«ó«⌐ óÑαΦ¿¡δ ó
  2959.      ñÑαÑóÑ ¬áΓὫú«ó ¿ß»«½∞ºπÑΓß∩ ß¿ßΓѼ¡á∩ Σπ¡¬µ¿∩ mknod, »«ß½Ñ τÑú« ñóáª-
  2960.      ñδ óδºδóáÑΓß∩ ß¿ßΓѼ¡á∩ Σπ¡¬µ¿∩ link, »α¿ó∩ºδóáεΘá∩ Γ«τ¬¿ óσ«ñá ó ¬áΓá-
  2961.      ½«ú ß ¿¼Ñ¡á¼¿ "." ¿ ".." ¬ ¡«ó«⌐ óÑαΦ¿¡Ñ ¿ ¬ ÑÑ α«ñ¿Γѽ∞߬«¼π ¬áΓὫúπ.
  2962.      üѺ φΓ¿σ ΓαÑσ «»Ñαᵿ⌐ ¬áΓὫú ¡Ñ íπñÑΓ ¿¼ÑΓ∞  ¡áñ½ÑªáΘ¿⌐  Σ«α¼áΓ.  ùΓ«
  2963.      »α«¿º«⌐ñÑΓ, Ñß½¿ ó« óαѼ∩ ¿ß»«½¡Ñ¡¿∩ ¬«¼á¡ñδ mkdir »α«µÑßß »«½πτ¿Γ ß¿ú-
  2964.      ¡á½  ?  ùΓ« Ñß½¿ »α¿ φΓ«¼ íπñÑΓ »«½πτÑ¡ ß¿ú¡á½ SIGKILL, ¬«Γ«αδ⌐ »α«µÑßß
  2965.      ¡Ñ αáß»«º¡áÑΓ ? ¥Γπ ªÑ »α«í½Ñ¼π αáßß¼«Γα¿ΓÑ »α¿¼Ñ¡¿Γѽ∞¡« ¬  αÑ὿ºáµ¿¿
  2966.      ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿ mkdir.
  2967.  12.  Åα«µÑßß »α«óÑα∩ÑΓ ¡á½¿τ¿Ñ ß¿ú¡á½«ó ó ¼«¼Ñ¡Γδ »ÑαÑσ«ñá ó ß«ßΓ«∩¡¿Ñ »α¿-
  2968.      «ßΓá¡«óá ¿ óδσ«ñá ¿º ¡Ñú« (Ñß½¿ ó ß«ßΓ«∩¡¿¿ »α¿«ßΓá¡«óá  »α«µÑßß  ¡áσ«-
  2969.      ñ¿½ß∩ ß »α¿«α¿ΓÑΓ«¼, ñ«»π߬áεΘ¿¼ »αÑαδóá¡¿∩), á ΓᬪѠ󠼫¼Ñ¡Γ »ÑαÑσ«ñá
  2970.      ó  αѪ¿¼ ºáñáτ¿ ¿º αѪ¿¼á ∩ñαá »« ºáóÑαΦÑ¡¿¿ ¿ß»«½¡Ñ¡¿∩ ß¿ßΓѼ¡«⌐ Σπ¡¬-
  2971.      µ¿¿ ¿½¿ »«ß½Ñ «íαáí«Γ¬¿ »αÑαδóá¡¿∩. Å«τѼπ »α«µÑßß ¡Ñ »α«óÑα∩ÑΓ ¡á½¿τ¿Ñ
  2972.      ß¿ú¡á½«ó ó ¼«¼Ñ¡Γ «íαáΘÑ¡¿∩ ¬ ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿ ?
  2973. *13. ÅαÑñ»«½«ª¿¼, τΓ« »«ß½Ñ ¿ß»«½¡Ñ¡¿∩ ß¿ßΓѼ¡«⌐ Σπ¡¬µ¿¿ »α«µÑßß ú«Γ«ó¿Γß∩ ¬
  2974.      ó«ºóαáΘÑ¡¿ε ó αѪ¿¼ ºáñáτ¿ ¿ ¡Ñ «í¡áαπª¿óáÑΓ ¡¿ «ñ¡«ú«  ¡Ñ«íαáí«Γá¡¡«ú«
  2975.      ß¿ú¡á½á. æαáºπ »«ß½Ñ φΓ«ú« ∩ñα« «íαáíáΓδóáÑΓ »αÑαδóá¡¿Ñ ¿ »«ßδ½áÑΓ »α«-
  2976.  
  2977.                                     226
  2978.  
  2979.      µÑßßπ  ß¿ú¡á½.  (ìá»α¿¼Ñα,  »«½∞º«óáΓѽѼ íδ½á ¡áªáΓá ¬½áó¿Φá "break".)
  2980.     ùΓ« ñѽáÑΓ »α«µÑßß »«ß½Ñ Γ«ú«, ¬á¬ ∩ñα« ºáóÑαΦáÑΓ «íαáí«Γ¬π  »αÑαδóá¡¿∩?
  2981. *14.  àß½¿ »α«µÑßßπ «ñ¡«óαѼѡ¡« »«ßδ½áÑΓß∩ ¡Ñ߬«½∞¬« ß¿ú¡á½«ó, ∩ñα« «íαáíá-
  2982.      ΓδóáÑΓ ¿σ ó Γ«¼ »«α∩ñ¬Ñ, ó ¬á¬«¼ «¡¿ »ÑαÑτ¿ß½Ñ¡δ ó «»¿ßá¡¿¿. æπΘÑßΓóπεΓ
  2983.      Γα¿ ß»«ß«íá αÑáú¿α«óá¡¿∩ ¡á »«½πτÑ¡¿Ñ ß¿ú¡á½á - »α¿Ñ¼ ß¿ú¡á½«ó,  ºáóÑα-
  2984.      ΦÑ¡¿Ñ  óδ»«½¡Ñ¡¿∩ ß« ßíα«ß«¼ ¡á ó¡ÑΦ¡¿⌐ ¡«ß¿Γѽ∞ (ñá¼»¿α«ó᡿Ѽ) «íαáºá
  2985.      »α«µÑßßá ó »á¼∩Γ¿ ¿ ºáóÑαΦÑ¡¿Ñ óδ»«½¡Ñ¡¿∩ íѺ  ñá¼»¿α«óá¡¿∩.  î«ª¡«  ½¿
  2986.      π¬áºáΓ∞ ¡á¿½πτΦ¿⌐ »«α∩ñ«¬ «íαáí«Γ¬¿ «ñ¡«óαѼѡ¡« »«ßΓπ»áεΘ¿σ ß¿ú¡á½«ó ?
  2987.      ìá»α¿¼Ñα,  Ñß½¿ »α«µÑßß »«½πτáÑΓ ß¿ú¡á½ « óδσ«ñÑ (óδºδóáεΘ¿⌐ ñá¼»¿α«óá-
  2988.      ¡¿Ñ «íαáºá »α«µÑßßá ó »á¼∩Γ¿) ¿ ß¿ú¡á½ « »αÑαδóá¡¿¿ (óδσ«ñ íѺ ñá¼»¿α«-
  2989.      óá¡¿∩), Γ« ¬á¬«⌐ ¿º φΓ¿σ ß¿ú¡á½«ó ¿¼Ñ½« íδ ß¼δß½ «íαáí«ΓáΓ∞ »Ñαóδ¼ ?
  2990.  15. çừ¼¡¿ΓÑ ¡«óπε ß¿ßΓѼ¡πε Σπ¡¬µ¿ε  newpgrp(pid,ngrp);
  2991.      ¬«Γ«αá∩ ó¬½ετáÑΓ »α«µÑßß ß ¿ñÑ¡Γ¿Σ¿¬áΓ«α«¼ pid ó úαπ»»π »α«µÑßß«ó ß ¡«-
  2992.      ¼Ñα«¼ ngrp (πßΓá¡áó½¿óáÑΓ ñ½∩ »α«µÑßßá ¡«óπε  úαπ»»π).  Å«ñπ¼á⌐ΓÑ,  ñ½∩
  2993.      ¬á¬¿σ  µÑ½Ñ⌐  «¡á ¼«ªÑΓ ¿ß»«½∞º«óáΓ∞ß∩ ¿ ¬á¬¿Ñ «»áß¡«ßΓ¿ Γá¿Γ ó ßÑíÑ ÑÑ
  2994.      ó맮ó.
  2995.  16. Å᫬«¼¼Ñ¡Γ¿απ⌐ΓÑ ß½ÑñπεΘÑÑ πΓóÑαªñÑ¡¿Ñ: »« á½ú«α¿Γ¼π wait »α«µÑßß ¼«ªÑΓ
  2996.      »α¿«ßΓá¡«ó¿Γ∞ß∩ ñ« ¡áßΓπ»½Ñ¡¿∩ ¬á¬«ú«-½¿í« ß«íδΓ¿∩ ¿ φΓ« ¡Ñ  «Γαế½«ß∞
  2997.      íδ ¡á αáí«ΓÑ óßÑ⌐ ß¿ßΓѼδ.
  2998.  17. Éáßß¼«Γα¿¼ ¡«óπε ß¿ßΓѼ¡πε Σπ¡¬µ¿ε
  2999.      nowait(pid);
  3000.      úñÑ  pid  - ¿ñÑ¡Γ¿Σ¿¬áΓ«α »α«µÑßßá, ∩ó½∩εΘÑú«ß∩ »«Γ«¼¬«¼ Γ«ú« »α«µÑßßá,
  3001.      ¬«Γ«αδ⌐ óδºδóáÑΓ Σπ¡¬µ¿ε. éδºδóá∩ Σπ¡¬µ¿ε, »α«µÑßß ΓѼ  ßá¼δ¼  ß««íΘáÑΓ
  3002.      ∩ñαπ « Γ«¼, τΓ« «¡ ¡Ñ ß«í¿αáÑΓß∩ ñ«ª¿ñáΓ∞ß∩ ºáóÑαΦÑ¡¿∩ óδ»«½¡Ñ¡¿∩ ßó«Ñ-
  3003.      ú« »«Γ«¼¬á, »«φΓ«¼π ∩ñα« ¼«ªÑΓ »« «¬«¡τá¡¿¿ ßπΘÑßΓó«óá¡¿∩ »«Γ«¼¬á ßαáºπ
  3004.      ªÑ  «τ¿ßΓ¿Γ∞ ºá¡¿¼áѼ«Ñ ¿¼ ¼ÑßΓ« ó Γáí½¿µÑ »α«µÑßß«ó. èᬿ¼ «íαẫ¼ φΓ«
  3005.      αÑ὿ºπÑΓß∩ ¡á »αá¬Γ¿¬Ñ ? ÄµÑ¡¿ΓÑ ñ«ßΓ«¿¡ßΓóá ¡«ó«⌐ Σπ¡¬µ¿¿ ¿  ßαáó¡¿ΓÑ
  3006.      ÑÑ ¿ß»«½∞º«óá¡¿Ñ ß ¿ß»«½∞º«ó᡿Ѽ ß¿ú¡á½«ó Γ¿»á "ú¿íѽ∞ »«Γ«¼¬á".
  3007.  18. çáúαπºτ¿¬ ¼«ñπ½Ñ⌐ ¡á æ¿ áóΓ«¼áΓ¿τÑ߬¿ »«ñ¬½ετáÑΓ ¬ «ß¡«ó¡«¼π ¼«ñπ½ε ¡á-
  3008.      τá½∞¡πε »α«µÑñπαπ (startup), ¬«Γ«αá∩ óδºδóáÑΓ Σπ¡¬µ¿ε main, »α¿¡áñ½Ñªá-
  3009.      Θπε  »α«úαἼѠ»«½∞º«óáΓѽ∩. àß½¿ ó »«½∞º«óáΓѽ∞߬«⌐ »α«úαἼѠ«ΓßπΓßΓ-
  3010.      óπÑΓ ó맮ó Σπ¡¬µ¿¿ exit, »α«µÑñπαá startup ßá¼á  óδºδóáÑΓ  φΓπ  Σπ¡¬µ¿ε
  3011.      »α¿  óδσ«ñÑ ¿º Σπ¡¬µ¿¿ main. ùΓ« »α«¿º«Φ½« íδ ó Γ«¼ ß½πτáÑ, Ñß½¿ íδ ¿ ó
  3012.      »α«µÑñπαÑ startup «ΓßπΓßΓó«óá½ ó맮ó Σπ¡¬µ¿¿ exit (¿º-ºá «Φ¿í¬¿ ºáúαπº-
  3013.      τ¿¬á) ?
  3014.  19. èá¬πε ¿¡Σ«α¼áµ¿ε »«½πτ¿Γ »α«µÑßß, óδ»«½¡∩εΘ¿⌐ Σπ¡¬µ¿ε  wait,  Ñß½¿  Ñú«
  3015.      »«Γ«¼«¬  ºá»πßΓ¿Γ Σπ¡¬µ¿ε exit íѺ »áαá¼ÑΓαá ? ê¼ÑÑΓß∩ ó ó¿ñπ, τΓ« »α«-
  3016.      µÑßß-»«Γ«¼«¬ ó맮óÑΓ Σπ¡¬µ¿ε ó  Σ«α¼áΓÑ  exit()  ó¼ÑßΓ«  exit(n).  àß½¿
  3017.      »α«úαá¼¼¿ßΓ  »«ßΓ«∩¡¡«  ¿ß»«½∞ºπÑΓ ó맮ó Σπ¡¬µ¿¿ exit íѺ »áαá¼ÑΓαá, Γ«
  3018.      ¡á߬«½∞¬« »αÑñ߬áºπѼ« º¡áτÑ¡¿Ñ, «ª¿ñáѼ«Ñ  Σπ¡¬µ¿Ñ⌐  wait  ?  ä«¬áª¿ΓÑ
  3019.      ßó«⌐ «ΓóÑΓ.
  3020.  20.  ÄíΩ∩ß¡¿ΓÑ,  τΓ« »α«¿º«⌐ñÑΓ, Ñß½¿ »α«µÑßß, ¿ß»«½¡∩εΘ¿⌐ »α«úαá¼¼π ¡á É¿-
  3021.      ßπ¡¬Ñ 7.36 ºá»πßΓ¿Γ ß »«¼«Θ∞ε Σπ¡¬µ¿¿ exec ßἫú«  ßÑí∩.  èᬠ ó  Γᬫ¼
  3022.      ß½πτáÑ ∩ñα« ß¼«ªÑΓ ¿ºíѪáΓ∞ ó«º¡¿¬¡«óÑ¡¿∩ Γπ»¿¬«óδσ ß¿Γπᵿ⌐, ßó∩ºá¡¡δσ
  3023.      ß í½«¬¿α«ó¬«⌐ ¿¡ñѬ߫ó ?
  3024.                ┌──────────────────────────────────┐
  3025.                │ main(argc,argv)                  │
  3026.                │      int argc;                   │
  3027.                │      char *argv[];               │
  3028.                │ {                                │
  3029.                │      execl(argv[0],argv[0],0);   │
  3030.                │ }                                │
  3031.                └──────────────────────────────────┘
  3032.                           É¿ßπ¡«¬ 7.36
  3033.  
  3034.  21.  Å« πß½«ó¿ε »Ñαóδ¼ áαúπ¼Ñ¡Γ«¼ Σπ¡¬µ¿¿ exec ∩ó½∩ÑΓß∩ ¿¼∩ (»«ß½Ññ¡∩∩ ¬«¼-
  3035.      »«¡Ñ¡Γá ¿¼Ñ¡¿ »πΓ¿ »«¿ß¬á) ¿ß»«½¡∩Ѽ«ú« »α«µÑßß«¼ Σá⌐½á. ùΓ« »α«¿º«⌐ñÑΓ
  3036.      ó αѺπ½∞ΓáΓÑ óδ»«½¡Ñ¡¿∩ »α«úαá¼¼δ, »α¿óÑñÑ¡¡«⌐ ¡á É¿ßπ¡¬Ñ 7.37 ?  èᬫó
  3037.      íπñÑΓ  φΣΣѬΓ,  Ñß½¿  ó ¬áτÑßΓóÑ Σá⌐½á "a.out" óδßΓπ»¿Γ ºáúαπº«τ¡δ⌐ ¼«-
  3038.  
  3039.                                     227
  3040.  
  3041.      ñπ½∞, »«½πτÑ¡¡δ⌐ ó αѺπ½∞ΓáΓÑ Γαá¡ß½∩µ¿¿ »α«úαá¼¼δ, »α¿óÑñÑ¡¡«⌐ ¡á  É¿-
  3042.      ßπ¡¬Ñ 7.36 ?
  3043.  22. ÅαÑñ»«½«ª¿¼, τΓ« ó ∩ºδ¬Ñ æ¿ »«ññÑনóáÑΓß∩ ¡«óδ⌐ Γ¿» ñá¡¡δσ "read-only"
  3044.      (Γ«½∞¬«  ñ½∩  τΓÑ¡¿∩), »α¿τѼ »α«µÑßß, »δΓáεΘ¿⌐ß∩ ºá»¿ßáΓ∞ ¿¡Σ«α¼áµ¿ε ó
  3045.      »«½Ñ ß φΓ¿¼ Γ¿»«¼, »«½πτáÑΓ «Γ¬áº ß¿ßΓÑ¼δ  ºáΘ¿Γδ.  Ä»¿Φ¿ΓÑ  αÑ὿ºáµ¿ε
  3046.      φΓ«ú« ¼«¼Ñ¡Γá. (ìá¼Ñ¬: ßαáó¡¿ΓÑ φΓ« »«¡∩Γ¿Ñ ß »«¡∩Γ¿Ñ¼ "αáºñѽ∩Ѽá∩ «í-
  3047.      ½áßΓ∞ ¬«¼á¡ñ".) é ¬á¬¿Ñ ¿º á½ú«α¿Γ¼«ó ∩ñαá »«ΓαÑíπÑΓß∩ ó¡ÑßΓ¿ ¿º¼Ñ¡Ñ¡¿∩
  3048.      ? èᬿѠÑΘÑ «íΩѬΓδ ¼«úπΓ íδΓ∞ αÑ὿º«óá¡δ á¡á½«ú¿τ¡δ¼ ß «í½áßΓ∞ε «íαá-
  3049.      º«¼ ?
  3050.  23.  èᬿѠ¿º¼Ñ¡Ñ¡¿∩ ¿¼ÑεΓ ¼ÑßΓ« ó á½ú«α¿Γ¼áσ open, chmod, unlink ¿ unmount
  3051.      »α¿ αáí«ΓÑ ß Σá⌐½á¼¿, ñ½∩ ¬«Γ«αδσ πßΓá¡«ó½Ñ¡ αѪ¿¼ "sticky-bit" ? èᬿÑ
  3052.      ñÑ⌐ßΓó¿∩, ¡á»α¿¼Ñα, ß½ÑñπÑΓ »αÑñ»α¿¡∩Γ∞ ó «Γ¡«ΦÑ¡¿¿ Γᬫú« Σá⌐½á  ∩ñαπ,
  3053.      ¬«úñá ß Σá⌐½«¼ αáºαδóáÑΓß∩ ßó∩º∞ ?
  3054.  24. æπ»Ñα»«½∞º«óáΓѽ∞ ∩ó½∩ÑΓß∩ Ññ¿¡ßΓóÑ¡¡δ¼ »«½∞º«óáΓѽѼ, ¿¼ÑεΘ¿¼ »αáó« ¡á
  3055.      ºá»¿ß∞  ó  Σá⌐½  »áα«½Ñ⌐ "/etc/passwd", í½áú«ñáα∩ τѼπ ß«ñÑন¼«Ñ Σá⌐½á
  3056.      »αÑñ«σαá¡∩ÑΓß∩ «Γ π¼δΦ½Ñ¡¡«⌐ ¿½¿ ß½πτá⌐¡«⌐ »«ατ¿. Åα«úαá¼¼á passwd ñáÑΓ
  3057.      »«½∞º«óáΓѽ∩¼ ó«º¼«ª¡«ßΓ∞ ¿º¼Ñ¡∩Γ∞ ßó«⌐ ß«íßΓóÑ¡¡δ⌐ »áα«½∞, ºáΘ¿Θá∩  «Γ
  3058.      ¿º¼Ñ¡Ñ¡¿⌐ τπª¿Ñ ºá»¿ß¿. èᬿ¼ «íαẫ¼ «¡á αáí«ΓáÑΓ ?
  3059.  
  3060.      ┌─────────────────────────────────────────────────────┐
  3061.      │ main()                                              │
  3062.      │ {                                                   │
  3063.      │    if (fork() == 0)                                 │
  3064.      │    {                                                │
  3065.      │       execl("a.out",0);                             │
  3066.      │       printf("¡Ñπñáτ¡«Ñ ºáóÑαΦÑ¡¿Ñ Σπ¡¬µ¿¿ exec\n");│
  3067.      │    }                                                │
  3068.      │ }                                                   │
  3069.      └─────────────────────────────────────────────────────┘
  3070.                           É¿ßπ¡«¬ 7.37
  3071.  
  3072.  
  3073. *25.  Å«∩ß¡¿ΓÑ,  ¬á¬á∩  πúα«ºá  íѺ«»áß¡«ßΓ¿ σαá¡Ñ¡¿∩ ñá¡¡δσ ó«º¡¿¬áÑΓ, Ñß½¿
  3074.      setuid-»α«úαἼᠡѠºáΘ¿ΘÑ¡á «Γ ºá»¿ß¿.
  3075.  26. éδ»«½¡¿ΓÑ ß½ÑñπεΘπε »«ß½Ññ«óáΓѽ∞¡«ßΓ∞ ¬«¼á¡ñ, ó ¬«Γ«α«⌐ "a.
  3076.      out" - ¿¼∩ ¿ß»«½¡∩Ѽ«ú« Σá⌐½á:
  3077.  
  3078.      ┌─────────────────────────────────────────────────────┐
  3079.      │ main()                                              │
  3080.      │ {                                                   │
  3081.      │    char *endpt;                                     │
  3082.      │    char *sbrk();                                    │
  3083.      │    int brk();                                       │
  3084.      │                                                     │
  3085.      │    endpt = sbrk(0);                                 │
  3086.      │    printf("endpt = %ud »«ß½Ñ sbrk\n", (int) endpt); │
  3087.      │                                                     │
  3088.      │    while (endpt--)                                  │
  3089.      │    {                                                │
  3090.      │       if (brk(endpt) == -1)                         │
  3091.      │       {                                             │
  3092.      │          printf("brk ß »áαá¼ÑΓα«¼ %ud ºáóÑαΦ¿½áß∞   │
  3093.      │                  ¡Ñπñáτ¡«\n",endpt);                │
  3094.      │          exit();                                    │
  3095.      │       }                                             │
  3096.      │    }                                                │
  3097.      │ }                                                   │
  3098.      └─────────────────────────────────────────────────────┘
  3099.                           É¿ßπ¡«¬ 7.38
  3100.  
  3101.                                     228
  3102.  
  3103.      chmod 4777 a.out
  3104.      chown root a.out
  3105.      è«¼á¡ñá chmod "ó¬½ετáÑΓ" í¿Γ setuid (4  ó  4777);  »«½∞º«óáΓѽ∞  "root"
  3106.      Γαáñ¿µ¿«¡¡« ∩ó½∩ÑΓß∩ ßπ»Ñα»«½∞º«óáΓѽѼ. î«ªÑΓ ½¿ ó αѺπ½∞ΓáΓÑ óδ»«½¡Ñ-
  3107.      ¡¿∩ φΓ«⌐ »«ß½Ññ«óáΓѽ∞¡«ßΓ¿ »α«¿º«⌐Γ¿ ¡áαπΦÑ¡¿Ñ ºáΘ¿Γδ ¿¡Σ«α¼áµ¿¿ ?
  3108.  27.  ùΓ«  »α«¿º«⌐ñÑΓ ó »α«µÑßßÑ óδ»«½¡Ñ¡¿∩ »α«úαá¼¼δ, »αÑñßΓáó½Ñ¡¡«⌐ ¡á É¿-
  3109.      ßπ¡¬Ñ 7.38 ? Å«∩ß¡¿ΓÑ ßó«⌐ «ΓóÑΓ.
  3110.  28. ü¿í½¿«ΓÑτ¡á∩ »«ñ»α«úαá¼¼á malloc πóѽ¿τ¿óáÑΓ «í½áßΓ∞ ñá¡¡δσ »α«µÑßßá  ß
  3111.      »«¼«Θ∞ε Σπ¡¬µ¿¿ brk, á »«ñ»α«úαá¼¼á free «ßó«í«ªñáÑΓ »á¼∩Γ∞, óδñѽѡ¡πε
  3112.      »«ñ»α«úαá¼¼«⌐ malloc. æ¿¡Γá¬ß¿ß ó맮óá »«ñ»α«úαá¼¼:
  3113.  
  3114.      ptr = malloc(size);
  3115.      free(ptr);
  3116.  
  3117.      úñÑ  size  -  µÑ½«Ñ τ¿ß½« íѺ º¡á¬á, «í«º¡áτáεΘÑÑ ¬«½¿τÑßΓó« óδñѽ∩Ѽδσ
  3118.      íá⌐Γ »á¼∩Γ¿, á ptr - ß¿¼ó«½∞¡á∩ ßßδ½¬á ¡á ó¡«ó∞ óδñѽѡ¡«Ñ  »α«ßΓαá¡ßΓ-
  3119.      ó«.  ÅαѪñÑ  τѼ  »«∩ó¿Γ∞ß∩  ó ¬áτÑßΓóÑ »áαá¼ÑΓαá ó ó맮óÑ »«ñ»α«úαá¼¼δ
  3120.      free, π¬áºáΓѽ∞ ptr ñ«½ªÑ¡ íδΓ∞ ó«ºóαáΘÑ¡ »«ñ»α«úαá¼¼«⌐ malloc.  éδ»«½-
  3121.      ¡¿ΓÑ φΓ¿ »«ñ»α«úαá¼¼δ.
  3122.  29.  ùΓ«  »α«¿º«⌐ñÑΓ ó »α«µÑßßÑ óδ»«½¡Ñ¡¿∩ »α«úαá¼¼δ, »αÑñßΓáó½Ñ¡¡«⌐ ¡á É¿-
  3123.      ßπ¡¬Ñ 7.39 ? æαáó¡¿ΓÑ αѺπ½∞ΓáΓδ óδ»«½¡Ñ¡¿∩ φΓ«⌐ »α«úαá¼¼δ ß  αѺπ½∞Γá-
  3124.      ΓἿ, »αÑñπß¼«ΓαÑ¡¡δ¼¿ ó ß¿ßΓѼ¡«¼ «»¿ßá¡¿¿.
  3125.  
  3126.      ┌─────────────────────────────────────────────────────┐
  3127.      │ main()                                              │
  3128.      │ {                                                   │
  3129.      │    int i;                                           │
  3130.      │    char *cp;                                        │
  3131.      │    extern char *sbrk();                             │
  3132.      │                                                     │
  3133.      │    cp = sbrk(10);                                   │
  3134.      │    for (i = 0; i < 10; i++)                         │
  3135.      │       *cp++ = 'a' + i;                              │
  3136.      │    sbrk(-10);                                       │
  3137.      │    cp = sbrk(10);                                   │
  3138.      │    for (i = 0; i < 10; i++)                         │
  3139.      │          printf("char %d = '%c'\n",i,*cp++);        │
  3140.      │ }                                                   │
  3141.      └─────────────────────────────────────────────────────┘
  3142.  
  3143.      É¿ßπ¡«¬ 7.39. Åα¿¼Ñα »α«úαá¼¼δ, ¿ß»«½∞ºπεΘÑ⌐ »«ñ»α«úαá¼¼π sbrk
  3144.  
  3145.  30. èᬿ¼ «íαẫ¼ ¬«¼á¡ñ¡δ⌐ »α«µÑßß«α shell πº¡áÑΓ « Γ«¼, τΓ« Σá⌐½ ¿ß»«½¡∩-
  3146.      Ñ¼δ⌐,  ¬«úñá  ñ½∩  óδ»«½¡Ñ¡¿∩ ¬«¼á¡ñδ ß«ºñáÑΓ ¡«óδ⌐ »α«µÑßß ? àß½¿ Σá⌐½
  3147.      ¿ß»«½¡∩Ѽδ⌐, Γ« ¬á¬ πº¡áΓ∞, ß«ºñá¡ ½¿ «¡ ó αѺπ½∞ΓáΓÑ Γαá¡ß½∩µ¿¿ ¿ßσ«ñ-
  3148.      ¡«⌐ »α«úαá¼¼δ ¿½¿ ªÑ »αÑñßΓáó½∩ÑΓ ß«í«⌐ ¡áí«α ¬«¼á¡ñ ∩ºδ¬á  shell  ?  é
  3149.      ¬á¬«¼ »«α∩ñ¬Ñ ß½ÑñπÑΓ óδ»«½¡∩Γ∞ »α«óÑα¬π π¬áºá¡¡δσ πß½«ó¿⌐ ?
  3150.  31. é ¬«¼á¡ñ¡«¼ ∩ºδ¬Ñ shell ß¿¼ó«½δ ">>" ¿ß»«½∞ºπεΓß∩ ñ½∩ ¡á»αáó½Ñ¡¿∩ óδó«-
  3151.      ñá  ñá¡¡δσ  ó Σá⌐½ ß π¬áºá¡¡«⌐ ß»Ñµ¿Σ¿¬áµ¿Ñ⌐, ¡á»α¿¼Ñα, ¬«¼á¡ñá: run >>
  3152.      outfile «Γ¬αδóáÑΓ Σá⌐½ ß ¿¼Ñ¡Ñ¼ "outfile" (á ó ß½πτáÑ «ΓßπΓßΓó¿∩  Σá⌐½á
  3153.      ß  Γᬿ¼ ¿¼Ñ¡Ñ¼ ß«ºñáÑΓ Ñú«) ¿ ºá»¿ßδóáÑΓ ó ¡Ñú« ñá¡¡δÑ. ìá»¿Φ¿ΓÑ »α«ú-
  3154.      αá¼¼π, ó ¬«Γ«α«⌐ ¿ß»«½∞ºπÑΓß∩ φΓá ¬«¼á¡ñá.
  3155.  32. Åα«µÑßß«α ¬«¼á¡ñ¡«ú« ∩ºδ¬á shell »α«óÑα∩ÑΓ ¬«ñ,  ó«ºóαáΘáѼδ⌐  Σπ¡¬µ¿Ñ⌐
  3156.      exit,  ó«ß»α¿¡¿¼á∩ ¡π½Ñó«Ñ º¡áτÑ¡¿Ñ ¬á¬ "¿ßΓ¿¡π", á ½εí«Ñ ñαπú«Ñ º¡áτÑ-
  3157.      ¡¿Ñ ¬á¬ "½«ª∞" («íαáΓ¿ΓѠ󡿼᡿Ѡ¡á ¡Ñß«ú½áß«óá¡¡«ßΓ∞  ß  ∩ºδ¬«¼  æ¿).
  3158.      ÅαÑñ»«½«ª¿¼, τΓ« Σá⌐½, ¿ß»«½¡∩εΘ¿⌐ »α«úαá¼¼π ¡á É¿ßπ¡¬Ñ 7.40, ¿¼ÑÑΓ ¿¼∩
  3159.      "truth".  Å«∩ß¡¿ΓÑ, τΓ« »α«¿º«⌐ñÑΓ, ¬«úñá shell íπñÑΓ ¿ß»«½¡∩Γ∞ ß½Ññπε-
  3160.      Θ¿⌐ ¡áí«α ¬«¼á¡ñ:
  3161.      while truth
  3162.  
  3163.                                     229
  3164.  
  3165.                        ┌──────────────────┐
  3166.                        │ main()           │
  3167.                        │ {                │
  3168.                        │      exit(0);    │
  3169.                        │ }                │
  3170.                        └──────────────────┘
  3171.  
  3172.                            É¿ßπ¡«¬ 7.40
  3173.  
  3174.      do
  3175.      truth &
  3176.      done
  3177.  33. é«»α«ß »« É¿ßπ¡¬π 7.29: é ßó∩º¿ ß τѼ ó«º¡¿¬áÑΓ ¡Ñ«íσ«ñ¿¼«ßΓ∞ ó  ß«ºñá-
  3178.      ¡¿¿ »α«µÑßß«ó ñ½∩ ¬«¡óÑ⌐Ñα¡«⌐ «íαáí«Γ¬¿ ñóπσ¬«¼»«¡Ñ¡Γ¡«⌐ ¬«¼á¡ñδ ó π¬á-
  3179.      ºá¡¡«¼ »«α∩ñ¬Ñ ?
  3180.  34.  ìá»¿Φ¿ΓÑ í«½ÑÑ «íΘπε »α«úαá¼¼π αáí«Γδ «ß¡«ó¡«ú« µ¿¬½á »α«µÑßß«αá shell
  3181.      ó τáßΓ¿ «íαáí«Γ¬¿ ¬á¡á½«ó. ê¼ÑÑΓß∩ ó ó¿ñπ, τΓ« »α«úαἼᠠñ«½ª¡á  π¼ÑΓ∞
  3182.      «íαáíáΓδóáΓ∞ ß½πτá⌐¡«Ñ τ¿ß½« ¬á¡á½«ó, π¬áºá¡¡δσ ó ¬«¼á¡ñ¡«⌐ ßΓ᫬Ñ.
  3183.  35.  ÅÑαѼѡ¡á∩  ßαÑñδ  PATH  «»¿ßδóáÑΓ  »«α∩ñ«¬, ó ¬«Γ«α«¼ shell'π ß½ÑñπÑΓ
  3184.      »α«ß¼áΓα¿óáΓ∞ ¬áΓὫú¿ ó »«¿ß¬áσ  ¿ß»«½¡∩Ѽδσ  Σá⌐½«ó.  é  í¿í½¿«ΓÑτ¡δσ
  3185.      Σπ¡¬µ¿∩σ execlp ¿ execvp »ÑαÑτ¿ß½Ñ¡¡δÑ ó PATH ¬áΓὫú¿ »α¿ß«Ññ¿¡∩εΓß∩ ¬
  3186.      ¿¼Ñ¡á¼  Σá⌐½«ó,  ¬α«¼Ñ ΓÑσ, ¬«Γ«αδÑ ¡áτ¿¡áεΓß∩ ß ß¿¼ó«½á "/". éδ»«½¡¿ΓÑ
  3187.      φΓ¿ Σπ¡¬µ¿¿.
  3188. *36. ä½∩ Γ«ú«, τΓ«íδ shell ó »«¿ß¬áσ ¿ß»«½¡∩Ѽδσ Σá⌐½«ó ¡Ñ «íαáΘá½ß∩ ¬ ΓѬπ-
  3189.      ΘѼπ ¬áΓὫúπ, ßπ»Ñα»«½∞º«óáΓѽ∞ ñ«½ªÑ¡ ºáñáΓ∞ »ÑαѼѡ¡πε  ßαÑñδ  PATH.
  3190.      èá¬á∩  πú஧á íѺ«»áß¡«ßΓ¿ σαá¡Ñ¡¿∩ ñá¡¡δσ ¼«ªÑΓ ó«º¡¿¬¡πΓ∞, Ñß½¿ shell
  3191.      »«»δΓáÑΓß∩ ¿ß»«½¡¿Γ∞ Σá⌐½δ ¿º ΓѬπΘÑú« ¬áΓὫúá ?
  3192.  37. èᬿ¼ «íαẫ¼ shell «íαáíáΓδóáÑΓ ¬«¼á¡ñπ cd (ß«ºñáΓ∞ ¬áΓὫú)  ?  èᬿÑ
  3193.      ñÑ⌐ßΓó¿∩  »αÑñ»α¿¡¿¼áÑΓ  shell ó »α«µÑßßÑ «íαáí«Γ¬¿ ß½ÑñπεΘÑ⌐ ¬«¼á¡ñ¡«⌐
  3194.      ßΓ᫬¿: cd pathname & ?
  3195.  38. è«úñá »«½∞º«óáΓѽ∞ ¡áª¿¼áÑΓ ¡á ¬½áó¿áΓπαÑ  ΓÑନ¡á½á  ¬½áó¿Φ¿  "delete"
  3196.      ¿½¿   "break",  óßѼ  »α«µÑßßá¼,  óσ«ñ∩Θ¿¼  ó  úαπ»»π  αÑú¿ßΓαᵿ«¡¡«ú«
  3197.      shell'á, ΓÑନ¡á½∞¡δ⌐ ñαá⌐óÑα »«ßδ½áÑΓ ß¿ú¡á½ «  »αÑαδóá¡¿¿.  Å«½∞º«óá-
  3198.      Γѽ∞   ¼«ªÑΓ  ¿¼ÑΓ∞  ¡á¼ÑαÑ¡¿Ñ  «ßΓá¡«ó¿Γ∞  óßÑ  »α«µÑßßδ,  »«α«ªñÑ¡¡δÑ
  3199.      shell'«¼, íѺ óδσ«ñá ¿º ß¿ßΓѼδ. èᬿѠ πß«óÑαΦÑ¡ßΓó«óá¡¿∩  ó  ßó∩º¿  ß
  3200.      φΓ¿¼ ß½ÑñπÑΓ »α«¿ºóÑßΓ¿ ó ΓѽѠ«ß¡«ó¡«ú« µ¿¬½á »α«úαá¼¼δ shell (É¿ßπ¡«¬
  3201.      7.28) ?
  3202.  39. æ »«¼«Θ∞ε ¬«¼á¡ñδ nohup command_line
  3203.      »«½∞º«óáΓѽ∞  ¼«ªÑΓ «Γ¼Ñ¡¿Γ∞ ñÑ⌐ßΓó¿Ñ ß¿ú¡á½«ó « "ºáó¿ßá¡¿¿" ¿ « ºáóÑα-
  3204.      ΦÑ¡¿¿  (quit)  ó  «Γ¡«ΦÑ¡¿¿  »α«µÑßß«ó,  αÑ὿ºπεΘ¿σ  ¬«¼á¡ñ¡πε  ßΓ᫬π
  3205.      (command_line).  èᬠ φΓá ¬«¼á¡ñá íπñÑΓ «íαáíáΓδóáΓ∞ß∩ ó «ß¡«ó¡«¼ µ¿¬½Ñ
  3206.      »α«úαá¼¼δ shell ?
  3207.  40. Éáßß¼«Γα¿¼ ¡áí«α ¬«¼á¡ñ ∩ºδ¬á shell:
  3208.      nroff -mm bigfile1 > big1out &
  3209.      nroff -mm bigfile2 > big2out
  3210.      ¿ ó¡«ó∞ «íαáΓ¿¼ß∩ ¬ «ß¡«ó¡«¼π µ¿¬½π »α«úαá¼¼δ shell (É¿ßπ¡«¬ 7.28). ùΓ«
  3211.      »α«¿º«⌐ñÑΓ, Ñß½¿ óδ»«½¡Ñ¡¿Ñ »Ñαó«⌐ ¬«¼á¡ñδ nroff ºáóÑαΦ¿Γß∩ αá¡∞ΦÑ óΓ«-
  3212.      α«⌐ ? èᬿѠ¿º¼Ñ¡Ñ¡¿∩ ß½ÑñπÑΓ ó¡ÑßΓ¿ ó «ß¡«ó¡«⌐ µ¿¬½ »α«úαá¼¼δ shell ¡á
  3213.      φΓ«Γ ß½πτá⌐ ?
  3214.  41. ùáßΓ« ó« óαѼ∩ óδ»«½¡Ñ¡¿∩ ¿º shell'á ¡Ñ»α«ΓÑßΓ¿α«óá¡¡δσ »α«úαá¼¼  »«∩ó-
  3215.      ½∩ÑΓß∩  ß««íΘÑ¡¿Ñ  «í «Φ¿í¬Ñ ß½ÑñπεΘÑú« ó¿ñá: "Bus error - core dumped"
  3216.      (ÄΦ¿í¬á ó ¼áú¿ßΓα὿ - ß«ñÑন¼«Ñ »á¼∩Γ¿ ßíα«ΦÑ¡« ¡á ó¡ÑΦ¡¿⌐ ¡«ß¿Γѽ∞).
  3217.      ÄτÑó¿ñ¡«, τΓ« ó »α«úαἼѠóδ»«½¡∩εΓß∩ ¬á¬¿Ñ-Γ«  ¡Ññ«»πßΓ¿¼δÑ  ñÑ⌐ßΓó¿∩;
  3218.      «Γ¬πñá shell πº¡áÑΓ « Γ«¼, τΓ« Ñ¼π ¡πª¡« óδóÑßΓ¿ ß««íΘÑ¡¿Ñ «í «Φ¿í¬Ñ ?
  3219.  42.  Åα«µÑßß«¼  1 ó ß¿ßΓѼѠ¼«ªÑΓ óδßΓπ»áΓ∞ Γ«½∞¬« »α«µÑßß init. ÆÑ¼ ¡Ñ ¼Ñ-
  3220.      ¡ÑÑ, ºá»πßΓ¿ó »α«µÑßß init, áñ¼¿¡¿ßΓαáΓ«α ß¿ßΓÑ¼δ ¼«ªÑΓ ΓѼ ßá¼δ¼ ¿º¼Ñ-
  3221.      ¡¿Γ∞ ß«ßΓ«∩¡¿Ñ ß¿ßΓѼδ. ìá»α¿¼Ñα, »α¿ ºáúαπº¬Ñ ß¿ßΓѼᠠ¼«ªÑΓ  ó«⌐Γ¿  ó
  3222.      «ñ¡«»«½∞º«óáΓѽ∞߬¿⌐  αѪ¿¼,  «º¡áτáεΘ¿⌐,  τΓ« ó ß¿ßΓѼѠá¬Γ¿óÑ¡ Γ«½∞¬«
  3223.      ¬«¡ß«½∞¡δ⌐ ΓÑନ¡á½. ä½∩ Γ«ú«, τΓ«íδ »ÑαÑóÑßΓ¿ »α«µÑßß init ó ß«ßΓ«∩¡¿Ñ
  3224.  
  3225.                                     230
  3226.  
  3227.      2 (¼¡«ú«»«½∞º«óáΓѽ∞߬¿⌐ αѪ¿¼), áñ¼¿¡¿ßΓαáΓ«α ß¿ßΓѼδ óó«ñ¿Γ ß ¬«¡ß«½¿
  3228.      ¬«¼á¡ñπ
  3229.      init 2    .
  3230.      è«¡ß«½∞¡δ⌐ shell »«α«ªñáÑΓ ßó«Ñ «ΓóÑΓó½Ñ¡¿Ñ ¿ ºá»π߬áÑΓ init. ùΓ« ¿¼Ñ½«
  3231.      íδ ¼ÑßΓ« ó ß¿ßΓѼѠó Γ«¼ ß½πτáÑ, Ñß½¿ íδ á¬Γ¿óÑ¡ íδ½ Γ«½∞¬«  «ñ¿¡  »α«-
  3232.      µÑßß init ?
  3233.  43.  ö«α¼áΓ ºá»¿ßÑ⌐ ó Σá⌐½Ñ "/etc/inittab" ñ«»π߬áÑΓ ºáñá¡¿Ñ ñÑ⌐ßΓó¿∩, ßó∩-
  3234.      ºá¡¡«ú« ß ¬áªñδ¼ »«α«ªñáÑ¼δ¼  »α«µÑßß«¼.  ìá»α¿¼Ñα,  ß  getty-»α«µÑßß«¼
  3235.      ßó∩ºá¡«  ñÑ⌐ßΓó¿Ñ "respawn" (ó«ºα«ªñÑ¡¿Ñ), «º¡áτáεΘÑÑ, τΓ« »α«µÑßß init
  3236.      ñ«½ªÑ¡ ó«ºα«ªñáΓ∞ getty-»α«µÑßß, Ñß½¿ »«ß½Ññ¡¿⌐ »αѬαáΘáÑΓ  ßπΘÑßΓó«óá-
  3237.      ¡¿Ñ.  ìá  »αá¬Γ¿¬Ñ,  ¬«úñá »«½∞º«óáΓѽ∞ óδσ«ñ¿Γ ¿º ß¿ßΓÑ¼δ »α«µÑßß init
  3238.      »«α«ªñáÑΓ ¡«óδ⌐ getty-»α«µÑßß, τΓ«íδ ñαπú«⌐ »«½∞º«óáΓѽ∞  ¼«ú  »«½πτ¿Γ∞
  3239.      ñ«ßΓπ»  ¬ óαѼѡ¡« íѺñÑ⌐ßΓóπεΘÑ⌐ ΓÑନ¡á½∞¡«⌐ ½¿¡¿¿. èᬿ¼ «íαẫ¼ φΓ«
  3240.      ñѽáÑΓ »α«µÑßß init ?
  3241.  44. ìѬ«Γ«αδÑ ¿º á½ú«α¿Γ¼«ó ∩ñαá »α¿íÑúáεΓ ¬ »α«ß¼«Γαπ  Γáí½¿µδ  »α«µÑßß«ó.
  3242.      éαѼ∩  »«¿ß¬á  ñá¡¡δσ  ¼«ª¡« ß«¬αáΓ¿Γ∞, Ñß½¿ ¿ß»«½∞º«óáΓ∞ π¬áºáΓѽ¿ ¡á:
  3243.      α«ñ¿Γѽ∩ »α«µÑßßá, ½εí«ú« ¿º »«Γ«¼¬«ó, ñαπú«⌐ »α«µÑßß, ¿¼ÑεΘ¿⌐ Γ«ú«  ªÑ
  3244.      α«ñ¿Γѽ∩.  Åα«µÑßß  «í¡áαπª¿óáÑΓ óßÑσ ßó«¿σ »«Γ«¼¬«ó, ß½Ññπ∩ ß¡áτá½á ºá
  3245.      π¬áºáΓѽѼ ¡á ½εí«ú« ¿º »«Γ«¼¬«ó, á ºáΓѼ ¿ß»«½∞ºπ∩ π¬áºáΓѽ¿ ¡á ñαπú¿Ñ
  3246.      »α«µÑßßδ, ¿¼ÑεΘ¿Ñ Γ«ú« ªÑ α«ñ¿Γѽ∩ (µ¿¬½δ ¡Ññ«»πßΓ¿¼δ). èᬿѠ¿º  á½ú«-
  3247.      α¿Γ¼«ó óδ¿úαáεΓ «Γ φΓ«ú« ? èᬿѠ¿º á½ú«α¿Γ¼«ó ¡πª¡« «ßΓáó¿Γ∞ íѺ ¿º¼Ñ-
  3248.  
  3249.  
  3250.  
  3251.  
  3252.  
  3253.  
  3254.  
  3255.  
  3256.  
  3257.  
  3258.  
  3259.  
  3260.  
  3261.  
  3262.  
  3263.  
  3264.  
  3265.  
  3266.  
  3267.  
  3268.  
  3269.  
  3270.  
  3271.  
  3272.  
  3273.  
  3274.  
  3275.  
  3276.  
  3277.  
  3278.                                     231
  3279.