Анонимді құбырлар: Процестер аралық байланыс құралы
Anonymous pipe
Анонимді құбырлар – процестер аралық байланыс құралы. Бір бағытты дерек алмасуға арналған, жүйелік деңгейде жұмыс істейді. Операциялық жүйелерде қолданылады.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Компьютерлік ғылымда анонимді құбыр – бір бағытты процестер аралық байланыс (IPC) үшін қолданылатын қарапайым FIFO байланыс арнасы. Іске асыру көбінесе операциялық жүйенің файлдық кіріс-шығыс кіші жүйесіне (IO) енгізіледі. Әдетте, басты бағдарлама анонимді құбырларды ашып, құбырдың екінші ұштарын мұраға алатын жаңа процесті құрайды немесе бірнеше жаңа процестерді құрып, оларды құбыр желісі ретінде ұйымдастырады. Толық дуплекс (екі жақты) байланыс үшін әдетте екі анонимді құбыр қажет. Құбырлар Unix және DOS-тан бастап көптеген танымал операциялық жүйелерде қолдауға ие және көптеген қабықшаларда "|" символын пайдаланып жасалады.
In computer science, an anonymous pipe is a simplex FIFO communication channel that may be used for one way interprocess communication (IPC). An implementation is often integrated into the operating system's file IO subsystem. Typically a parent program opens anonymous pipes, and creates a new process that inherits the other ends of the pipes, or creates several new processes and arranges them in a pipeline. Full duplex (two way) communication normally requires two anonymous pipes. Pipelines are supported in most popular operating systems, from Unix and DOS onwards, and are created using the "|" character in many shells.
Unix жүйесі
Құбырлар көптеген дәстүрлі Unix қолданбаларының маңызды бөлігі болып табылады және оларды қолдау көптеген Unix-қа ұқсас операциялық жүйелерге жақсы интеграцияланған. Құбырлар `pipe` жүйелік шақыру арқылы құрылады, ол жаңа құбырды жасайды және құбырдың оқу және жазу соңдарын білдіретін екі файл дескрипторын қайтарады. Көптеген дәстүрлі Unix бағдарламалары құбырлармен жұмыс істеу үшін сүзгі ретінде құрастырылған.
Pipelines are an important part of many traditional Unix applications and support for them is well integrated into most Unix like operating systems. Pipes are created using the pipe system call, which creates a new pipe and returns a pair of file descriptors referring to the read and write ends of the pipe. Many traditional Unix programs are designed as filters to work with pipes.
Microsoft Windows-тың жүйелік жүйесі
Windows API-дегі көптеген басқа құрылғы IO және IPC мүмкіндіктері сияқты, анонимді құбырлар да IO мүмкіндігіне тән API функциялары арқылы құрылады және конфигурацияланады. Осы ретте, анонимді құбырды құру үшін CreatePipe функциясы қолданылады, ол құбырдың оқу және жазу шеттері үшін жеке тұтқаларды ұсынады. Құбырмен IO операцияларын оқу және жазу стандартты IO құрылғысының ReadFile және WriteFile API функцияларымен жүзеге асырылады. Microsoft Windows жүйесінде анонимді құбырларға оқу және жазу әрқашан тоқтатылады. Яғни, бос құбырдан оқу сұранышы шақырушы жіпті кем дегенде бір байт қолжетімді болғанға дейін немесе құбырдың жазу тұтқасы жабылғаннан кейін файл соңы алынғанға дейін күтеді. Сол сияқты, толық құбырға жазу шақырушы жіпті жазылып жатқан деректерді сақтау үшін орын босағанша күтеді. Оқу операциялары сұралған байттар санынан кем болуы мүмкін (бұл «қысқа оқу» деп те аталады). Жаңа процестер құрылу кезінде анонимді құбырларға тұтқаларды мұрагерлікке ала алады.
Like many other device IO and IPC facilities in the Windows API, anonymous pipes are created and configured with API functions that are specific to the IO facility. In this case CreatePipe is used to create an anonymous pipe with separate handles for the read and write ends of the pipe. Read and write IO operations on the pipe are performed with the standard IO facility API functions ReadFile and WriteFile. On Microsoft Windows, reads and writes to anonymous pipes are always blocking. In other words, a read from an empty pipe will cause the calling thread to wait until at least one byte becomes available or an end of file is received as a result of the write handle of the pipe being closed. Likewise, a write to a full pipe will cause the calling thread to wait until space becomes available to store the data being written. Reads may return with fewer than the number of bytes requested (also called a short read). New processes can inherit handles to anonymous pipes in the creation process.