Π ΠΏΠ΅ΡΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΡ UNIX, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠΉ Π’ΠΎΠΌΠΏΡΠΎΠ½ΠΎΠΌ ΠΈ Π ΠΈΡΠΈ, ΠΎΡΡΡΡΡΡΠ²ΠΎΠ²Π°Π» Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΌΠΎΠ³ Π±Ρ Π±ΡΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ°ΠΉΠ»Ρ. ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π·Π°Ρ Π²Π°ΡΠ° Π±ΡΠ» ΠΏΡΠΈΠ·Π½Π°Π½ ΠΈΠ·Π»ΠΈΡΠ½ΠΈΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ, ΠΊΠ°ΠΊ ΠΎΡΠΌΠ΅ΡΠ°Π΅Ρ Π ΠΈΡΠΈ, Β«ΠΌΡ Π½Π΅ ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π΅Π»Π° Ρ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ , ΡΠΎΡΡΠΎΡΡΠΈΠΌΠΈ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈΒ» (ΡΠΌ. [Ritchie 81]). ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ²ΡΡΠΈΡΡ ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ UNIX Π΄Π»Ρ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ Ρ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ , Π² Π²Π΅ΡΡΠΈΡ V ΡΠΈΡΡΠ΅ΠΌΡ Π½ΡΠ½Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ Π·Π°Ρ Π²Π°ΡΠ° ΡΠ°ΠΉΠ»Π° ΠΈ Π·Π°ΠΏΠΈΡΠΈ. ΠΠ°Ρ Π²Π°Ρ ΡΠ°ΠΉΠ»Π° β ΡΡΠΎ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π΅ Π·Π°ΠΏΡΠ΅ΡΠΈΡΡ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΡ Π»ΡΠ±ΠΎΠΉ ΡΠ°ΡΡΠΈ ΡΠ°ΠΉΠ»Π°, Π° Π·Π°Ρ Π²Π°Ρ Π·Π°ΠΏΠΈΡΠΈ β ΡΡΠΎ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π΅ Π·Π°ΠΏΡΠ΅ΡΠΈΡΡ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ Π²Π²ΠΎΠ΄-Π²ΡΠ²ΠΎΠ΄ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ (ΡΠ°ΡΡΠ΅ΠΉ ΡΠ°ΠΉΠ»Π° ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌΠΈ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡΠΌΠΈ). Π ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠΈ 5.9 ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π·Π°Ρ Π²Π°ΡΠ° ΡΠ°ΠΉΠ»Π° ΠΈ Π·Π°ΠΏΠΈΡΠΈ.
5.5 Π£ΠΠΠΠΠΠΠ ΠΠΠ‘Π’Π Π Π€ΠΠΠΠ, ΠΠΠ ΠΠ£ΠΠΠ’ ΠΠ«ΠΠΠΠΠ―Π’Π¬Π‘Π― ΠΠΠΠ-ΠΠ«ΠΠΠ β LSEEΠ
ΠΠ±ΡΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ read ΠΈ write ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ°ΠΉΠ»Ρ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΠ·ΠΎΠ² ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ lseek Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΌΠ΅ΡΡΠ° Π² ΡΠ°ΠΉΠ»Π΅, Π³Π΄Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡΡ Π²Π²ΠΎΠ΄-Π²ΡΠ²ΠΎΠ΄, ΠΈ ΠΎΡΡΡΠ΅ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ°ΠΉΠ»Ρ. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π²ΡΠ·ΠΎΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ:
position = lseek(fd, offset, reference);
Π³Π΄Π΅ fd β Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΡΠ°ΠΉΠ»Π°, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΡΡΠΈΠΉ ΡΠ°ΠΉΠ», offset β ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π² Π±Π°ΠΉΡΠ°Ρ , Π° reference ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ offset ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΡ Π½Π°ΡΠ°Π»Π° ΡΠ°ΠΉΠ»Π°, ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΡ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π° ΠΈΠ»ΠΈ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΡ ΠΊΠΎΠ½ΡΠ° ΡΠ°ΠΉΠ»Π°. ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, position, ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π² Π±Π°ΠΉΡΠ°Ρ Π΄ΠΎ ΠΌΠ΅ΡΡΠ°, Π³Π΄Π΅ Π±ΡΠ΄Π΅Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π½Π° Π ΠΈΡΡΠ½ΠΊΠ΅ 5.10, ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ ΡΠ°ΠΉΠ», ΡΡΠΈΡΡΠ²Π°Π΅Ρ Π±Π°ΠΉΡ, Π° Π·Π°ΡΠ΅ΠΌ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ lseek, ΡΡΠΎΠ±Ρ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² Π²Π΅Π»ΠΈΡΠΈΠ½ΠΎΠΉ, ΡΠ°Π²Π½ΠΎΠΉ 1023 (Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ reference, ΠΈΠΌΠ΅ΡΡΠ΅ΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 1), ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠΈΠΊΠ». Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ 1024-ΠΉ Π±Π°ΠΉΡ ΡΠ°ΠΉΠ»Π°. ΠΡΠ»ΠΈ reference ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 0, ΡΠ΄ΡΠΎ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ ΠΏΠΎΠΈΡΠΊ ΠΎΡ Π½Π°ΡΠ°Π»Π° ΡΠ°ΠΉΠ»Π°, Π° Π΅ΡΠ»ΠΈ 2, ΡΠ΄ΡΠΎ Π²Π΅Π΄Π΅Ρ ΠΏΠΎΠΈΡΠΊ ΠΎΡ ΠΊΠΎΠ½ΡΠ° ΡΠ°ΠΉΠ»Π°. Π€ΡΠ½ΠΊΡΠΈΡ lseek Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π΄Π΅Π»Π°ΡΡ, ΠΊΡΠΎΠΌΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎΠΈΡΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΡΠ΅Ρ Π³ΠΎΠ»ΠΎΠ²ΠΊΡ ΡΡΠ΅Π½ΠΈΡ-Π·Π°ΠΏΠΈΡΠΈ Π½Π° ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ Π΄ΠΈΡΠΊΠΎΠ²ΡΠΉ ΡΠ΅ΠΊΡΠΎΡ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ lseek, ΡΠ΄ΡΠΎ ΠΏΡΠΎΡΡΠΎ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²; Π² ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π²ΡΠ·ΠΎΠ²Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΉ read ΠΈ write ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ.
#include βΉfcntl.hβΊ
main(argc, argv)
int argc; char *argv[];
{
int fd, skval;
char c;
if (argc != 2) exit();
fd = open(argv[1], O_RDONLY);
if (fd == -1) exit();
while ((skval = read(fd, &c,1 )) == 1) {
printf("char %c\n", c);
skval = lseek(fd, 1023L, 1);
printf("new seek val %d\n", skval);
}
}
Π ΠΈΡΡΠ½ΠΎΠΊ 5.10. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ°Ρ Π²ΡΠ·ΠΎΠ² ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ lseek
5.6 CLOSΠ
ΠΡΠΎΡΠ΅ΡΡ Π·Π°ΠΊΡΡΠ²Π°Π΅Ρ ΠΎΡΠΊΡΡΡΡΠΉ ΡΠ°ΠΉΠ», ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΡΠ΅ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ Π½Π΅ΠΌΡ. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π²ΡΠ·ΠΎΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ close (Π·Π°ΠΊΡΡΡΡ):
close(fd);
Π³Π΄Π΅ fd β Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. Π―Π΄ΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π·Π°ΠΊΡΡΡΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΡΠ°ΠΉΠ»Π° ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ· ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ². ΠΡΠ»ΠΈ ΡΡΠ΅ΡΡΠΈΠΊ ΡΡΡΠ»ΠΎΠΊ Π² Π·Π°ΠΏΠΈΡΠΈ ΡΠ°Π±Π»ΠΈΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π±ΠΎΠ»ΡΡΠ΅Π΅, ΡΠ΅ΠΌ 1, Π² ΡΠ²ΡΠ·ΠΈ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Π±ΡΠ»ΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΡΡΠ½ΠΊΡΠΈΡΠΌ dup ΠΈΠ»ΠΈ fork, ΡΠΎ ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π½Π° Π·Π°ΠΏΠΈΡΡ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² Π΄Π΅Π»Π°ΡΡ ΡΡΡΠ»ΠΊΡ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ, ΡΡΠΎ ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ Π΄Π°Π»Π΅Π΅; ΡΠ΄ΡΠΎ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π·Π°ΠΊΡΡΡΠΈΡ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ. ΠΡΠ»ΠΈ ΡΡΠ΅ΡΡΠΈΠΊ ΡΡΡΠ»ΠΎΠΊ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠ°Π²Π½ΠΎΠ΅ 1, ΡΠ΄ΡΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ Π·Π°ΠΏΠΈΡΡ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡ Π² ΠΏΠ°ΠΌΡΡΠΈ, ΡΠ°Π½Π΅Π΅ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΠΉ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ open (Π°Π»Π³ΠΎΡΠΈΡΠΌ iput). ΠΡΠ»ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ Π²ΡΠ΅ Π΅ΡΠ΅ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡ, ΡΠ΄ΡΠΎ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΡΡΠ»ΠΎΠΊ Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡ, Π½ΠΎ ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌ; Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅ΡΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΡΡΠ΅ΡΡΠΈΠΊ ΡΡΡΠ»ΠΎΠΊ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ 0. ΠΠΎΠ³Π΄Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ close Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ, Π·Π°ΠΏΠΈΡΡ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠ² ΡΠ°ΠΉΠ»Π° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΏΡΡΡΠΎΠΉ. ΠΠΎΠΏΡΡΠΊΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠΉ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄ΡΡΠ³ΠΎΠΌΡ ΡΠ°ΠΉΠ»Ρ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄ΡΡΠ³ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠΎΠ³Π΄Π° ΠΏΡΠΎΡΠ΅ΡΡ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ, ΡΠ΄ΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π½Π°Π»ΠΈΡΠΈΠ΅ Π°ΠΊΡΠΈΠ²Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠ² ΡΠ°ΠΉΠ»Π°, ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Π²ΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΡ, ΠΈ Π·Π°ΠΊΡΡΠ²Π°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ . Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΡΠ΅ΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ°ΠΉΠ» ΠΎΡΠΊΡΡΡΡΠΌ ΠΏΠΎΡΠ»Π΅ ΡΠ²ΠΎΠ΅Π³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ.
ΠΠ° Π ΠΈΡΡΠ½ΠΊΠ΅ 5.11, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ Π·Π°ΠΏΠΈΡΠΈ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π½Π° Π ΠΈΡΡΠ½ΠΊΠ΅ 5.4, ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²ΡΠΎΡΠΎΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π·Π°ΠΊΡΡΠ²Π°Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΈΠΌ ΡΠ°ΠΉΠ»Ρ. ΠΠ°ΠΏΠΈΡΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ°ΠΌ 3 ΠΈ 4 Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠ² ΡΠ°ΠΉΠ»ΠΎΠ², ΠΏΡΡΡΡ. Π‘ΡΠ΅ΡΡΠΈΠΊΠΈ Π² Π·Π°ΠΏΠΈΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠ΅ΠΏΠ΅ΡΡ ΠΈΠΌΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 0, Π° ΡΠ°ΠΌΠΈ Π·Π°ΠΏΠΈΡΠΈ ΠΏΡΡΡΡ. Π‘ΡΠ΅ΡΡΠΈΠΊΠΈ ΡΡΡΠ»ΠΎΠΊ Π½Π° ΡΠ°ΠΉΠ»Ρ Β«/etc/passwdΒ» ΠΈ Β«privateΒ» Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ ΡΠ°ΠΊΠΆΠ΅ ΡΠΌΠ΅Π½ΡΡΠΈΠ»ΠΈΡΡ. ΠΠ½Π΄Π΅ΠΊΡ Π΄Π»Ρ ΡΠ°ΠΉΠ»Π° Β«privateΒ» Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠΏΠΈΡΠΊΠ΅ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ², ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠ΅ΡΡΠΈΠΊ ΡΡΡΠ»ΠΎΠΊ Π½Π° Π½Π΅Π³ΠΎ ΡΠ°Π²Π΅Π½ 0, Π½ΠΎ Π·Π°ΠΏΠΈΡΡ ΠΎ Π½Π΅ΠΌ Π½Π΅ ΠΏΡΡΡΠ°. ΠΡΠ»ΠΈ Π΅ΡΠ΅ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡ ΠΊ ΡΠ°ΠΉΠ»Ρ Β«privateΒ», ΠΏΠΎΠΊΠ° ΠΈΠ½Π΄Π΅ΠΊΡ Π΅ΡΠ΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠΏΠΈΡΠΊΠ΅ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ², ΡΠ΄ΡΠΎ Π²ΠΎΡΡΡΠ΅Π±ΡΠ΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ 4.1.2.
Π ΠΈΡΡΠ½ΠΎΠΊ 5.11. Π’Π°Π±Π»ΠΈΡΡ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΊΡΡΡΠΈΡ ΡΠ°ΠΉΠ»Π°
5.7 Π‘ΠΠΠΠΠΠΠ Π€ΠΠΠΠ
Π‘ΠΈΡΡΠ΅ΠΌΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ open Π΄Π°Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΌΡ ΡΠ°ΠΉΠ»Ρ, Π° ΡΠΈΡΡΠ΅ΠΌΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ creat ΡΠΎΠ·Π΄Π°Π΅Ρ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ». Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π²ΡΠ·ΠΎΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ creat:
fd = creat(pathname, modes);
Π³Π΄Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ pathname, modes ΠΈ fd ΠΈΠΌΠ΅ΡΡ ΡΠΎΡ ΠΆΠ΅ ΡΠΌΡΡΠ», ΡΡΠΎ ΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ open. ΠΡΠ»ΠΈ ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π»ΠΎ, ΡΠ΄ΡΠΎ ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌΠΈ ΠΏΡΠ°Π²Π°ΠΌΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π½Π΅ΠΌΡ; Π΅ΡΠ»ΠΈ ΠΆΠ΅ ΡΠ°ΠΊΠΎΠΉ ΡΠ°ΠΉΠ» ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π», ΡΠ΄ΡΠΎ ΡΡΠ΅ΠΊΠ°Π΅Ρ ΡΠ°ΠΉΠ» (ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ Π²ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ Π±Π»ΠΎΠΊΠΈ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° ΡΠ°Π²Π½ΡΠΌ 0) ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΏΡΠ°Π² Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π½Π΅ΠΌΡ[16]. ΠΠ° Π ΠΈΡΡΠ½ΠΊΠ΅ 5.12 ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»Π°.
Π°Π»Π³ΠΎΡΠΈΡΠΌ creat
Π²Ρ ΠΎΠ΄Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ:
ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°
ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΡΠ°Π² Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ°ΠΉΠ»Ρ
Π²ΡΡ ΠΎΠ΄Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ: Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΡΠ°ΠΉΠ»Π°
{
ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π° (Π°Π»Π³ΠΎΡΠΈΡΠΌ namei);
if (ΡΠ°ΠΉΠ» ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ) {
if (Π΄ΠΎΡΡΡΠΏ Π½Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½) {
ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ (Π°Π»Π³ΠΎΡΠΈΡΠΌ iput);
return (ΠΎΡΠΈΠ±ΠΊΡ);
}
}
else { /* ΡΠ°ΠΉΠ» Π΅ΡΠ΅ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ */
Π½Π°Π·Π½Π°ΡΠΈΡΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΈΠ· ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ (Π°Π»Π³ΠΎΡΠΈΡΠΌ ialloc);
ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΡ ΡΠΎΡΠΊΡ Π²Ρ ΠΎΠ΄Π° Π² ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅;
Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΈΠΌΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΈ Π½ΠΎΠΌΠ΅Ρ Π²Π½ΠΎΠ²Ρ Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ°;
}
Π²ΡΠ΄Π΅Π»ΠΈΡΡ Π΄Π»Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ° Π·Π°ΠΏΠΈΡΡ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ΅ΡΡΠΈΠΊ;
if (ΡΠ°ΠΉΠ» ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π» ΠΊ ΠΌΠΎΠΌΠ΅Π½ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ) ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ Π²ΡΠ΅ Π±Π»ΠΎΠΊΠΈ ΡΠ°ΠΉΠ»Π° (Π°Π»Π³ΠΎΡΠΈΡΠΌ free);
ΡΠ½ΡΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ (Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°);
return (ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΡΠ°ΠΉΠ»Π°);
}
Π ΠΈΡΡΠ½ΠΎΠΊ 5.12. ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»Π°
Π―Π΄ΡΠΎ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡΡΠΈ ΠΏΠΎΠΈΡΠΊΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ namei ΠΈ ΡΠ»Π΅Π΄ΡΡ ΡΡΠΎΠΌΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ Π±ΡΠΊΠ²Π°Π»ΡΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΡΠ΅ΡΡ ΠΈΠ΄Π΅Ρ ΠΎ ΡΠ°Π·Π±ΠΎΡΠ΅ ΠΈΠΌΠ΅Π½ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ². ΠΠ΄Π½Π°ΠΊΠΎ, ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡΡΠΈ ΠΏΠΎΠΈΡΠΊΠ°, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, namei ΠΎΡΠΌΠ΅ΡΠ°Π΅Ρ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π² Π±Π°ΠΉΡΠ°Ρ Π΄ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΏΡΡΡΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΠΈ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΡΡΠΎ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΏΡΠΎΡΠ΅ΡΡΠ°. ΠΡΠ»ΠΈ ΡΠ΄ΡΠΎ Π½Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΎ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡΡΠΈ ΠΏΠΎΠΈΡΠΊΠ°, ΠΎΠ½ΠΎ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΡΡΠ΅ΡΠ΅ Π²ΠΏΠΈΡΠ΅Ρ ΠΈΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π² ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΡ ΠΏΡΡΡΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ. ΠΡΠ»ΠΈ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ Π½Π΅Ρ ΠΏΡΡΡΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΠΉ, ΡΠ΄ΡΠΎ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ° ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° ΠΈ ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ ΡΠ°ΠΌ. ΠΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈΠ½Π΄Π΅ΠΊΡ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° ΠΈ Π΄Π΅ΡΠΆΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ; ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ Π½ΠΎΠ²ΠΎΠΌΡ ΡΠ°ΠΉΠ»Ρ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠΌ. Π―Π΄ΡΠΎ Π½Π΅ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΏΠΎΠΊΠ° ΠΈΠΌΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³, ΡΠ°ΠΊ ΡΡΠΎ Π² ΡΠ»ΡΡΠ°Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΡΠ΄ΡΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΌΠ΅Π½ΡΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π΅Π»ΡΠ²Π°ΡΡ. ΠΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π½Π°Π»ΠΈΡΠΈΠ΅ Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π° Π·Π°ΠΏΠΈΡΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠΎΡΠ΅ΡΡ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ Π·Π°ΠΏΠΈΡΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ creat, Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π° Π·Π°ΠΏΠΈΡΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌ Π΄ΠΎΠ·Π²ΠΎΠ»ΡΠ΅ΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅.
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠ², ΡΡΠΎ ΠΏΠΎΠ΄ Π΄Π°Π½Π½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΠ°Π½Π΅Π΅ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π»ΠΎ ΡΠ°ΠΉΠ»Π°, ΡΠ΄ΡΠΎ Π½Π°Π·Π½Π°ΡΠ°Π΅Ρ Π½ΠΎΠ²ΠΎΠΌΡ ΡΠ°ΠΉΠ»Ρ ΠΈΠ½Π΄Π΅ΠΊΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ ialloc (ΡΠ°Π·Π΄Π΅Π» 4.6). ΠΠ°ΡΠ΅ΠΌ ΠΎΠ½ΠΎ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΈΠΌΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΈ Π½ΠΎΠΌΠ΅Ρ Π²Π½ΠΎΠ²Ρ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ° Π² ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³, Π° ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π² Π±Π°ΠΉΡΠ°Ρ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΏΡΠΎΡΠ΅ΡΡΠ°. ΠΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠΈ ΡΠ΄ΡΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°, ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠΉ Ρ ΡΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΊΠΎΠ³Π΄Π° Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»ΡΡ ΠΏΠΎΠΈΡΠΊ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π°. Π ΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΡΠ΅ΠΏΠ΅ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠΌΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΈ Π΅Π³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡ. Π―Π΄ΡΠΎ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ Π²Π½ΠΎΠ²Ρ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ Π½Π° Π΄ΠΈΡΠΊ (Π°Π»Π³ΠΎΡΠΈΡΠΌ bwrite), ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π½Π° Π΄ΠΈΡΠΊ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Ρ Π½ΠΎΠ²ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ. ΠΡΠ»ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌΠΈ Π·Π°ΠΏΠΈΡΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ ΡΠ±ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, Π² ΠΈΡΠΎΠ³Π΅ ΠΎΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ Π²ΡΠ΄Π΅Π»Π΅Π½ ΠΈΠ½Π΄Π΅ΠΊΡ, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΡΡΡΠ»Π°Π΅ΡΡΡ Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΠΈΠΌΠ΅Π½ ΠΏΡΡΠ΅ΠΉ ΠΏΠΎΠΈΡΠΊΠ° Π² ΡΠΈΡΡΠ΅ΠΌΠ΅, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° Π±ΡΠ΄Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ. ΠΡΠ»ΠΈ, Ρ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π±ΡΠ» Π·Π°ΠΏΠΈΡΠ°Π½ ΡΠ°Π½ΡΡΠ΅ Π²Π½ΠΎΠ²Ρ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΈ ΡΠ±ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ΅Π» ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ, ΡΠ°ΠΉΠ»ΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΈΠΌΡ ΠΏΡΡΠΈ ΠΏΠΎΠΈΡΠΊΠ°, ΡΡΡΠ»Π°ΡΡΠ΅Π΅ΡΡ Π½Π° Π½Π΅Π²Π΅ΡΠ½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ (Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠ± ΡΡΠΎΠΌ ΡΠΌ. Π² ΡΠ°Π·Π΄Π΅Π»Π΅ 5.16.1).