Именованные каналы Linux

Именованные каналы повторяют поведение неименованных каналов, но предназначены для обмена информацией между неродственными процессами.

Любые две запущенные программы Могут организовать однонаправленный канал передачи путем открытия файла канала по заранее согласованному имени на запись «с одной стороны» и на чтение «с другой».

Файл канала должен быть предварительно создан в дереве каталогов при помощи специального системного вызова mkfifo, а его последующее открытие осуществляется «обычным» системным вызовом open. Именованные каналы на текущий момент времени используются достаточно редко и практически вытеснены именованными локальными сокетами, но в некоторых случаях являются вполне достаточным средством взаимодействия.

В примере из листинга ниже показан терминальный мультиплексор W: [GNU screen], который в Ubuntu Linux все еще использует именованные каналы для однонаправленного взаимодействия между своими отключенным (detached) и повторно подключающимся (reattach, -r) экземплярами.

Именованные каналы

[email protected]:~$ tty

/dev/pts/0
fitz®ubuntu:~$ screen

pts/2

[email protected]:~$ tty 

/dev/pts/2

[email protected]ntu:~$                     …                  CTRL+A C                   …

pts/4

[email protected]:~$ tty 

/dev/pts/4

[email protected]:~$                     …                  CTRL+A D                    …

[detached from 22261. pts -14. ubuntu]

[email protected]:~$ tty

/dev/pts/0
[email protected]:~$ ps fp 22261 t pts/2,pts/4

PID   TTY        STAT      TIME   COMMAND
22261     ?              Ss           0:00     SCREEN
22262    pts/2       Ss+        0:00      \_ /bin/bash
28020    pts/4      Ss+         0:00      \_ /bin/bash
[email protected]:~$ screen -Is
There is a screen on:
22261.pts-14.ubuntu                (27.02.2016 23:25:17)          (Attached)
1 Socket in /var/run/screen/S-fitz.

итого 0
prwx——  1 fitz fitz 0 февр.  27  23:25 22261.pts-14.ubuntu
[email protected]:~$ screen -r

fitz®ubuntu:~$ tty

/dev/pts/4

[email protected]:~$ ^D

pts/4

[email protected]:~$ tty

/dev/pts/2

[email protected]:~$ ^D

[screen is terminating]

Терминальные мультиплексоры screen и tmux позволяют запускать несколько пользовательских «вторичных» сеансов одновременно, пер включаться между ними, отсоединяться от них и снова присоединяться к ним из «первичного» сеанса.

При этом «первичный» сеанс может быть организован как угодно, его можно завершать и начинать другим способом.

Например, запустив терминальный мультиплексор на алфавитно-цифровом виртуальном терминале и отключившись от него, можно подключиться к нему и продолжить работу уже из графического эмулятора терминала или по сети с использованием службы удаленного доступа SSH.

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *