Справочник по Debian

       

Именованные каналы (FIFOs)


Именованный канал - это файл, которые действует как труба. Вы помещаете что-то в данный файл, и оно выходит с другого конца. Это называется FIFO или First-In-First-Out: то, что первым помещено в канал, первым из него и выходит с другой стороны.

Если Вы пишите в именованный канал, то процесс, который это делает, не завершается до тех пор, пока записанная информация не будет прочтена из канала. Если Вы читаете из именнованного канала, то процесс, который это делает, будет работать до тех пор, пока в канале есть информация для чтения. Размер файла канала всегда нулевой - он не хранит данные, он просто связывает два процесса, как это делает операция | командного интерпретатора. Однако, так как этот канал имеет имя, то нет необходимости запускать эти процессы (читающий и пишущий - прим. переводчика) в одной и тоже командной строке (в отличие от | - прим. переводчика) и от имени одного и того же пользователя.

Вы можете изучить, как работает канал, на следующем примере:

$ cd; mkfifo mypipe $ echo "hello" >mypipe & # запустим в фоновом режиме [1] 5952

$ ls -l mypipe prw-r--r-- 1 penguin penguin 0 2003-11-06 23:18 mypipe $ cat mypipe hello [1]+ Done echo hello >mypipe $ ls mypipe prw-r--r-- 1 penguin penguin 0 2003-11-06 23:20 mypipe $ rm mypipe



Содержание раздела