Кіріспе

Unix операциялық жүйелеріндегі файл түрлері
POSIX стандартында анықталғандай, Unix жүйесіндегі жеті стандартты файл түрі: қалыпты файл, каталог, символдық сілтеме, FIFO арнайы, блок арнайы, символ арнайы және сокет. Әртүрлі операциялық жүйелерге тән нұсқалар POSIX талап еткеннен артық файл түрлерін қолдануға мүмкіндік береді (мысалы, Solaris есіктері). Файлдың түрін `ls -l` командасы арқылы анықтауға болады, ол файл жүйесінің рұқсаттары өрісінің бірінші таңбасында файл түрін көрсетеді. Қалыпты файлдар үшін Unix ешқандай ішкі файл құрылымын талап етпейді немесе ұсынбаиды; демек, олардың құрылымы мен мағынасы оларды пайдаланатын бағдарламалық қамтамасыздан толығымен тәуелді. Дегенмен, файлдың қандай деректерді қамтитынын анықтау үшін `file` командасын пайдалануға болады.

Сандық

Статистикалық құрылымда файл түрі мен рұқсаттар (режим) бір біт өрісінде сақталады, оның көлемі кем дегенде 12 бит (3 бит жеті мүмкін файл түрінің біреуін көрсету үшін; 9 бит рұқсаттар үшін). POSIX бойынша рұқсаттардың орналасуы ең кіші 9 битпен анықталады, ал қалған бөлігі анықталмаған. Файл түрін S_ISDIR сияқты макростарды пайдаланып тексеруге болады. Мұндай тексеру әдетте режимді S_IFMT (көбінесе 4 біт жетекші конвенциясы үшін "170000" сегіздік саны) арқылы маскалау және нәтиже S_IFDIR-мен сәйкес келе ме екенін тексеру арқылы жүзеге асырылады. S_IFMT – негізгі POSIX тұжырымы емес, X/Open System Interfaces (XSI) кеңейтім; тек POSIX стандартына сәйкес келетін жүйелер басқа әдістерді де қолдануы мүмкін. Бұл ұзақ форматтағы (l опциясы) шығыс форматына қатысты. Атап айтқанда, бірінші өріс (алғашқы бос орыннан бұрын) "файл режимі жолы" деп аталады, мысалы drwxr-xr-x. Оның бірінші таңбасы файл түрін көрсетеді, мысалы d (директория). Бұл жолдың қалған бөлігі файл рұқсаттарын көрсетеді.

Іске асыру үлгілері

GNU coreutils нұсқасы filemode функциясын шақырып, glibc функциясы (gnulib кітапханасында ашылған) арқылы режим тізбегін алады. FreeBSD одан қарапайым тәсілді қолданады, бірақ оның арқасында қолдау көрсетілетін файл түрлерінің саны шектеулі.

Символды байланыс

Символдық сілтеме – басқа файлға жасалған сілтеме. Бұл арнайы файл сілтеме жасалған файлдың жолының мәтіндік түрінде сақталады (демек, мақсатты орын салыстырмалы жол болуы мүмкін, немесе мүлдем жоқ болуы мүмкін). Символдық сілтеме режим жолының бірінші таңбасы ретінде l (кіші әріпті L) арқылы белгіленеді, мысалы, осы қысқартылған `ls -l` командасының нәтижесінде:

lrwxrwxrwx termcap > /usr/share/misc/termcap
lrwxrwxrwx S03xinetd > /init.d/xinetd

FIFO (аталған құбыр)

Unix-тің басты артықшылықтарының бірі – процестер аралық байланыс. Операциялық жүйе ұсынатын мүмкіндіктердің ішінде бір процестің шығысын екінші процестің кірісіне қосатын құбырлар бар. Егер екі процесс те бір пайдаланушы бастаған, бірдей ата-процесс кеңістігінде жұмыс істесе, бұл жақсы, бірақ байланыс жасайтын процестерге FIFO, яғни аталған құбырлар қолдану қажет болатын жағдайлар туындайды. Мұндай жағдайдың бірі – процестер әртүрлі пайдаланушы есімдерімен және рұқсаттарымен іске қосылуы керек болғанда. Аталған құбырлар – файл жүйесінің кез келген жерінде орналаса алатын арнайы файлдар. Оларды `mkfifo mypipe` командасы арқылы жасауға болады. Аталған құбырдың режиміндегі бірінші әріп p болып белгіленеді, мысалы, осы қысқартылған `ls -l` командасының нәтижесінде:

prw-rw---- mypipe

Тұйық

Сокет – екі процесс арасындағы байланысты қамтамасыз ететін, процестер аралық коммуникация үшін қолданылатын арнайы файл. Деректерді жіберуден басқа, процессдер файл дескрипторларын Unix домен сокеті арқылы sendmsg және recvmsg жүйелік шақыруларын пайдалана отырып жібере алады. Аталған құбырлардан (named pipes) айырмашылығы, олар тек бір бағыттағы дерек ағынына ғана мүмкіндік береді, ал сокет толық дуплекс режимінде жұмыс істей алады. Сокет, режим жолының бірінші әрпі ретінде "s" әрпімен белгіленеді, мысалы: srwxrwxrwx /tmp/.X11 unix/X0.