$Β <b>mount</b> /* ΠΠΎΠΊΠ°Π·Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ *//dev/hda2 on / type ext3 (rw)/dev/hda5 on /d type ext3 (rw)...$ <b>ls -li /tmp/message</b> /* ΠΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π±ΡΠ» Π² ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ / */228786 -rw-r--r-- 2 arnold devel 19 May 4 15:51 /tmp/message$ <b>cat /tmp/message</b>Hi, how ya doin' ?$ <b>/bin/pwd</b> /* Π’Π΅ΠΊΡΡΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π² Π΄ΡΡΠ³ΠΎΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ *//d/home/arnold$ <b>ln /tmp/message .</b> /* ΠΠΎΠΏΡΡΠΊΠ° ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΡΠ»ΠΊΡ */ln: creating hard link './message' to '/tmp/message': Invalid cross-device linkΠΠ° Π±ΠΎΠ»ΡΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΡΠ°ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΎΠ² ΠΊΠ°ΠΊ Π½Π° ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ Π΄ΠΈΡΠΊΠ°Ρ , ΡΠ°ΠΊ ΠΈ Π½Π° ΡΠ΄Π°Π»Π΅Π½Π½ΠΎ ΡΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ . ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΏΡΡΠΌΡΡ ΡΡΡΠ»ΠΎΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈΠ»ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½Ρ Π² Π½ΠΎΠ²ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ, Π½ΠΎ ΡΡΠ°ΡΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΆΠ΅ΡΡΠΊΠΎ Π²ΡΠΈΡΡΠ΅ Π² ΠΊΠΎΠ΄ ΠΈΠΌΠ΅Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ² Π΄Π»Ρ ΡΡΠ°ΡΡΡ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
Π§ΡΠΎΠ±Ρ ΠΎΠ±ΠΎΠΉΡΠΈ ΡΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅, 4.2 BSD Π²Π²Π΅Π»ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ (symbolic links, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ soft links). Π‘ΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΡΡΠ»ΠΊΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠΎΠ±ΠΎΠΉ ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΡΡ ΡΠ°ΠΉΠ»Π° (ΡΠ°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ ΠΎΡΠΎΠ±ΠΎΠΉ ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΡΡ ΡΠ°ΠΉΠ»Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³). Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΏΡΡΡ ΠΊ ΡΠ°ΠΉΠ»Ρ, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π°Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» Β«ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΒ». ΠΡΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Unix-ΡΠΈΡΡΠ΅ΠΌΡ, Π²ΠΊΠ»ΡΡΠ°Ρ Linux, ΠΏΡΠ΅Π΄ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ; ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΎΠ½ΠΈ ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΡΡ POSIX.
Π‘ΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° Π»ΡΠ±ΠΎΠΉ ΡΠ°ΠΉΠ» Π² ΡΠΈΡΡΠ΅ΠΌΠ΅. ΠΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΡΠ°ΠΊΠΆΠ΅ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ. ΠΡΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² Ρ ΠΌΠ΅ΡΡΠ° Π½Π° ΠΌΠ΅ΡΡΠΎ, ΠΊΠΎΠ³Π΄Π° Π½Π° ΡΡΠ°ΡΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΠΎΡΡΠ°Π΅ΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΡΡΠ»ΠΊΠ°, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠ°Ρ Π½Π° Π½ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
ΠΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΎΡΠΌΠ΅ΡΠ°Π΅Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ ΠΈ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π² ΡΠ°ΠΉΠ»Π΅ ΠΈΠ»ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°Π·Π°Π½. Π‘ΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΡΠΈΠΈ
-sln$ <b>/bin/pwd</b> /* ΠΠ΄Π΅ ΠΌΡ Π½Π°Ρ
ΠΎΠ΄ΠΈΠΌΡΡ *//d/home/arnold /* Π Π΄ΡΡΠ³ΠΎΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ */$ <b>ln -s /tmp/message ./hello</b> /* Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΡΡ ΡΡΡΠ»ΠΊΡ */$ <b>cat hello</b> /* ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π΅ */Hi, how ya doin' ?$ <b>ls -l hello</b> /* ΠΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π½Π΅ΠΉ */lrwxrwxrwx 1 arnold devel 12 May 4 16:41 hello -> /tmp/messageΠ€Π°ΠΉΠ», Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΡΡΠ»ΠΊΠ°, Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ. Π‘ΠΈΡΡΠ΅ΠΌΠ° ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅Ρ ΡΡΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈ Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
$ <b>rm /tmp/message</b> /* Π£Π΄Π°Π»ΠΈΡΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» */$ <b>cat ./hello</b> /* ΠΠΎΠΏΡΡΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΠ΅Π· ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΡΡ ΡΡΡΠ»ΠΊΡ */cat: ./hello: No such file or directory$ <b>echo hi again > hello</b> /* Π‘ΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° */$ <b>ls -l /tmp/message</b> /* ΠΠΎΠΊΠ°Π·Π°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ */-rw-r--r-- 1 arnold devel 9 May 4 16:45 /tmp/message$ <b>cat /tmp/message</b> /* ...ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ */hi againΠ‘ΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π°
symlink()#include <unistd.h> /* POSIX */int symlink(const char *oldpath, const char *newpath);ΠΡΠ³ΡΠΌΠ΅Π½Ρ
oldpathnewpatherrnoβ’Β ΠΠ½ΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡΡ Π»ΠΈΡΠ½Π΅Π΅ Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, ΡΡΠ΅Π±ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΈ Π±Π»ΠΎΠΊΠ° Π΄Π°Π½Π½ΡΡ . ΠΡΡΠΌΡΠ΅ ΡΡΡΠ»ΠΊΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡΡ Π»ΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°.
β’Β ΠΠ½ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π»ΠΈΡΠ½ΠΈΠ΅ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠ΅ ΡΠ°ΡΡ ΠΎΠ΄Ρ. Π―Π΄ΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡΡΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ.
β’Β ΠΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ·Π΄Π°ΡΡ Β«ΡΠΈΠΊΠ»ΡΒ». Π Π°ΡΡΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
$ <b>rm -f a b</b> /* Π£Π±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ 'a' ΠΈ 'b' Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ */$ <b>ln -s a b</b> /* Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΡΡΠ»ΠΊΡ ΡΡΠ°ΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° 'a' Π½Π° Π½ΠΎΠ²ΡΠΉ 'b' */$ <b>ln -s b a</b> /* Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΡΡΠ»ΠΊΡ ΡΡΠ°ΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° 'b' Π½Π° Π½ΠΎΠ²ΡΠΉ 'a' */$ <b>cat Π°</b> /* Π§ΡΠΎ ΡΠ»ΡΡΠΈΠ»ΠΎΡΡ? */cat: a: Too many levels of symbolic linksΠ―Π΄ΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠ°ΠΊΠΎΠΉ ΡΠ»ΡΡΠ°ΠΉ ΠΈ Π²ΡΠ΄Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅.
β’ ΠΠ½ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΎΠ±ΡΡΠ²Π°ΡΡΡΡ. ΠΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» Π² Π΄ΡΡΠ³ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ, ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΡΡΠ»ΠΊΠ° Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½Π°. Π‘ ΠΏΡΡΠΌΠΎΠΉ ΡΡΡΠ»ΠΊΠΎΠΉ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ»ΡΡΠΈΡΡΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ.
5.2. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ²
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² ΠΏΡΠΎΡΡΠΎ. ΠΠ²ΡΠΌΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌΠΈ Π²ΡΠ·ΠΎΠ²Π°ΠΌΠΈ, ΡΡΠΎ Π½Π΅ΡΠ΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ, ΡΠ²Π»ΡΡΡΡΡ
mkdir()rmdir()#include <sys/types.h> /* POSIX */#include <sys/stat.h>int mkdir(const char *pathname, mode_t mode);#include <unistd.h> /* POSIX */int rmdir(const char *pathname);ΠΠ±Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ 0 ΠΏΡΠΈ ΡΡΠΏΠ΅Ρ Π΅ ΠΈ (-1) ΠΏΡΠΈ ΠΎΡΠΈΠ±ΠΊΠ΅, Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ
errnomodemkdir()modecreat()open()ΠΠ±Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ '
...errnoENOTEMPTY...