Процестер арасындағы байланыс
Процестер арналар, розеткалар, ортақ жад және т. б. арқылы өзара
байланыса алады.
LINUX ОЖ - де бірнеше деңгейге бөлуге болатын процессаралық
алмасудың бірнеше түрі бар, дәлірек айтсақ, процессаралық өзара әрекеттесу
құралдары (Interprocess Communication-IPC) бар:
жергілікті (процессорға байланған және тек компьютерде мүмкін);
-каналдар
1. pipe (олар құбырлар, сондай-ақ аталмаған арналар), мен олар туралы
өткен постта көп айттым, мысал келтіруге болады: команда1 | команда2.
Негізінен, pipe stdin, stdout және stderr қолданады.
2. Аталған арналар (FIFO: first in First Out). Арнаның бұл түрі mknod
немесе mkfifo көмегімен жасалады және екі түрлі процесс оған аты бойынша
жүгіне
алады.
Аталған бағдарламалық арналарды mknod тобы жасайды.
Бағдарламалық арна-бұл ақпаратты "жазуға" болатын және осы
ақпаратты "оқуға" болатын арнайы файл. Сонымен қатар, ақпаратты жазу
және кейінгі оқу тәртібі FIFO алгоритмі (кезек) бойынша жасалады. Аталған
арнада mknod пәрмені шақырылған кезде көрсетілген атау бар:
#mknod [опциялар] <аты> p
Мысал: аталмаған бағдарламалық арнаның жұмысын көрсету: mknod
пәрменімен pipe деп аталатын бағдарламалық арна жасаңыз; мәтінді
бағдарламалық арнаға бағыттаңыз:
echo [мәтін ] > pipe
біз консольді өзгертеміз; арна арқылы мәтін аламыз және tee пәрменін
пайдаланып экранға шығарамыз:
tee < pipe
Пәрмен жолындағы аталмаған бағдарламалық арналар |
#ls -l | tee filetee
#cat filename > filename1 | pwd > filename|ls|sort
#find /usr -name "*.let" –print | more
Аталмаған бағдарламалық арналарды хабарларды тек туысқандар
процестерімен, яғни ортақ процесі бар процестермен-ата-бабалармен жіберу
үшін пайдалануға болады.
Fifo-мен жұмыс істеу мысалы: бірінші терминалда (біз pipe файлы
ретінде аталған арнаны жасаймыз және деректерді құбыр арқылы
мұрағатшыға жібереміз):
[root@proxy 1]# mkfifo pipe
[root@proxy 1]# ls -l
total 0
prw-r--r-- 1 root root 0 Nov 9 19:41 pipe
[root@proxy 1]# gzip -9 -c < pipe > out
екінші терминалда (деректерді аталған арнаға жібереміз):
[root@proxy 1]# cat /path/to/file > pipe
нәтижесінде, бұл берілетін gzip деректерін сығуға әкеледі.