ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ
rflg-r-rrflgΠ‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠ΅Π²Π΄ΠΎΠΊΠΎΠ΄ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ Π»ΠΎΠ³ΠΈΠΊΡ
compar()ls.c407 if <i>ls Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ</i> # dflg == 0408Β if <i>p1 Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΈ p1 ΠΊΠ°ΡΠ°Π»ΠΎΠ³</i>409Β Β if <i>p2 Π½Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΈ Π½Π΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³</i>410Β Β Β return 1 # ΠΏΠ΅ΡΠ²ΡΠΉ ΠΈΠ΄Π΅Ρ ΠΏΠΎΡΠ»Π΅ Π²ΡΠΎΡΠΎΠ³ΠΎΒ Β Β Β Β elseΒ Β Β Β Β Β <i>ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° ΡΠ΅ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ</i>411Β elseΒ Β Β Β Β # p1 Π½Π΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ412Β Β if <i>p2 Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³</i>413Β Β Β Β return -1 # ΠΏΠ΅ΡΠ²ΡΠΉ ΠΈΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠΎΡΡΠΌΒ Β Β Β Β elseΒ Β Β Β Β Β <i>ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° ΡΠ΅ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ</i>416 if <i>ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ</i> # tflg ΡΠ°Π²Π½ΠΎ trueΒ Β Β Β # ΡΡΠ°Π²Π½ΠΈΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π°:417Β if <i>Π²ΡΠ΅ΠΌΡ p2 ΡΠ°Π²Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ p1</i>418Β Β return 0419Β if <i>Π²ΡΠ΅ΠΌΡ p2 > Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ p1</i>420Β Β return <i>Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ rflg (ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΈΠ»ΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅)</i>Β Β Β Β # Π²ΡΠ΅ΠΌΡ p2 < Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ p1421Β return <i>ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠ΅ rflg Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ (ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΈΠ»ΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅)</i>423 <i>Π£ΠΌΠ½ΠΎΠΆΠΈΡΡ rflg Π½Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ strcmp()</i>424 <i>Π΄Π»Ρ Π΄Π²ΡΡ
ΠΈΠΌΠ΅Π½ ΠΈ Π²Π΅ΡΠ½ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ</i>ΠΡΠ³ΡΠΌΠ΅Π½ΡΡ
strcmp()lnstruct lbuf7.3. Π Π΅Π·ΡΠΌΠ΅
β’Β V7
lsβ’Β ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΌ Π²Π½Π΅ΡΠ½ΠΈΠΌ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅ΠΌ ΠΌΠ΅ΠΆΠ΄Ρ V7
lsls-Π°-l-Rβ’Β Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅
fliststruct lbufstruct statβ’Β ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΡΠΈ
lsmakename()Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ
1.Β Π Π°ΡΡΠΌΠΎΡΡΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ
getname()/etc/passwdjoe:xyzzy:2160:10:Joe User:/usr/joe:/bin/shjane:zzyxx:216:12:Jane User:/usr/jane:/bin/sh2.Β Π Π°ΡΡΠΌΠΎΡΡΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ
makename()sprintf()3.Β Π―Π²Π»ΡΡΡΡΡ Π»ΠΈ ΡΡΡΠΎΠΊΠΈ 319β320 Π²
readdir()4.Β ΠΠΎΠ·ΡΠΌΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
statnblock()lsst_blocksstruct stat5.Β ΠΠ°ΠΊ Π±Ρ Π²Ρ ΠΎΡΠ΅Π½ΠΈΠ»ΠΈ V7
lsmalloc()free()6.Β ΠΠ°ΠΊ Π²Ρ ΠΎΡΠ΅Π½ΠΈΠ»ΠΈ Π±Ρ ΡΡΠ½ΠΎΡΡΡ ΠΊΠΎΠ΄Π° V7
ls7.Β ΠΡΠ΅ΡΡΠΈΡΠ΅ ΡΠ°Π³ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΡΠ΄Π΅Π»Π°ΡΡ, ΡΡΠΎΠ±Ρ Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°ΡΡ V7
lsΠΠ»Π°Π²Π° 8
Π€Π°ΠΉΠ»ΠΎΠ²ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΠΎΠ±Ρ ΠΎΠ΄Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ²
ΠΠ°Π½Π½Π°Ρ Π³Π»Π°Π²Π° Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌ ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² Linux (ΠΈ Unix). Π‘Π½Π°ΡΠ°Π»Π° ΠΌΡ ΠΎΠΏΠΈΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΊ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Ρ ΠΈΠΌΠ΅Π½ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ (ΠΈ ΡΠ΄Π°Π»ΡΠ΅ΡΡΡ) ΡΠ°Π·Π΄Π΅Π» Π΄ΠΈΡΠΊΠ°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎ Π² ΠΎΠ±ΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π½ΠΈ Π·Π½Π°ΡΡ, Π½ΠΈ Π·Π°Π±ΠΎΡΠΈΡΡΡΡ ΠΎ ΠΌΠ΅ΡΡΠ΅ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ»Π°, Π²ΠΌΠ΅ΡΡΠ΅ Ρ API Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ
ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΎΠΏΠΈΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡΡΡ ΠΏΠΎ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Ρ ΠΈΠΌΠ΅Π½ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΏΠΎΠ»Π½ΡΠΉ ΠΏΡΡΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° ΠΈ ΠΊΠ°ΠΊ Π±Π΅Π· ΡΡΡΠ΄Π° ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠ΅ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠΈ (Π΄Π΅ΡΠ΅Π²ΡΡ) ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ½ΠΊΡΠΈΡ
nftw()chroot()8.1. ΠΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π΄Π΅ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌ
Π£Π½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠΌ Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ²ΠΎΠΌ Π΄ΠΈΠ·Π°ΠΉΠ½Π° Linux/Unix. ΠΠ°Π½Π½ΡΠΉ ΡΠ°Π·Π΄Π΅Π» ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ ΠΈΠ· ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΡΠ»ΡΠΆΠ΅Π±Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ².
8.1.1. ΠΠ±Π·ΠΎΡ ΠΎΡΠ½ΠΎΠ²
Π Π³Π»Π°Π²Π΅ 5 Β«ΠΠ°ΡΠ°Π»ΠΎΠ³ΠΈ ΠΈ ΡΠ»ΡΠΆΠ΅Π±Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Β», Π±ΡΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΠΈΠ½Π΄Π΅ΠΊΡΡ Π΄Π»Ρ ΡΠ»ΡΠΆΠ΅Π±Π½ΡΡ Π΄Π°Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΎ, ΠΊΠ°ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² ΡΠ²ΡΠ·ΡΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ² Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ Π Π½Π΅ΠΉ ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ»ΠΈ ΠΎΠΏΠΈΡΠ°Π½Ρ ΡΠ°Π·Π΄Π΅Π»Ρ ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΈ Π²Ρ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΡΡΠΎ ΠΏΡΡΠΌΡΠ΅ ΡΡΡΠ»ΠΊΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Ρ ΡΠ°Π±ΠΎΡΠΎΠΉ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π»ΠΈΡΡ Π½ΠΎΠΌΠ΅ΡΠ° ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ², Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π½Π΅ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½Ρ ΡΡΠ΅Π΄ΠΈ Π²ΡΠ΅Π³ΠΎ Π½Π°Π±ΠΎΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌ.