Программирование для Linux. Профессиональный подход
Шрифт:
Каналы часто используются для передачи данных программе, выполняющейся как подпроцесс (или приема данных от нее). Специально для этих целей предназначены функции
Сравните листинг 5.9 с предыдущим примером (листинг 5.8).
Функция
Первый аргумент функции
Функция
5.4.5. Каналы FIFO
Файл FIFO (First-In, First-Out — первым пришел, первым обслужен) — это канал, у которого есть имя в файловой системе. Любой процесс может открыть и закрыть такой файл. Процессы, находящиеся на противоположных концах канала, не обязаны быть связанными друг с другом. FIFO-файлы называют именованными каналами.
FIFO-файл создается с помощью команды
Первый символ в строке режима (
а в другом окне можно выполнять запись в файл:
Попробуйте во втором окне ввести какой-то текст и нажать <Enter>. Введенный текст немедленно отобразится в первом окне. Канал закрывается нажатием клавиш <Ctrl+D> во втором окне. FIFO-файл удаляется с помощью следующей команды:
FIFO-файл можно создать программным путем с помощью функции
К FIFO-файлу можно обращаться как к обычному файлу. При организации межзадачного взаимодействия одна программа должна открыть файл для записи, а другая - для чтения. Над файлом можно выполнять как низкоуровневые (
Например, на низком уровне запись блока данных в FIFO-файл осуществляется следующим образом:
А так выполняется чтение строки из FIFO-файла на высоком уровне:
У FIFO-файла одновременно может быть несколько читающих и записывающих программ. Входные потоки разбиваются на атомарные блоки, размер которых определяется константой
Каналы операционных систем семейства Win32 очень напоминают каналы Linux. Основное различие касается именованных каналов, которые в Win32 функционируют скорее как сокеты. Именованные каналы Win32 способны соединять по сети процессы, выполняющиеся на разных компьютерах. В Linux для этой цели используются именно сокеты. Кроме того, в Win32 допускается, чтобы несколько программ чтения или записи работали с именованным каналом, не перекрывая потоки друг друга, а сами каналы поддерживают двунаправленный обмен данными. [17]
17
Именованный канал можно создать только в Windows NT. В Windows 9х программы могут устанавливать только клиентские соединения.
Тайны исчезнувших цивилизаций
Все загадки Земли
Научно-образовательная:
история
культурология
рейтинг книги
Я не царь. Книга XXIV
24. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
рейтинг книги
Судьба
Проза:
историческая проза
советская классическая проза
рейтинг книги
Последний Паладин. Том 9
9. Путь Паладина
Фантастика:
попаданцы
аниме
фэнтези
рейтинг книги
Предсказание
Фантастика:
фэнтези
рейтинг книги
Игра киллера
Детективы:
боевики
рейтинг книги
Война. Krieg. 1941—1945. Произведения русских и немецких писателей
Проза:
военная проза
рейтинг книги
Ловец мудрости
Фантастика:
фэнтези
рейтинг книги
Дауншифтер
Фантастика:
боевая фантастика
рейтинг книги
Вечный. Книга III
3. Вечный
Фантастика:
фэнтези
попаданцы
рпг
рейтинг книги
Арестант
7. Бандитский Петербург
Детективы:
боевики
рейтинг книги
Барону наплевать на правила
7. Закон сильного
Фантастика:
боевая фантастика
попаданцы
аниме
рейтинг книги
Последний Паладин. Том 4
4. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
Молния
1. Молния
Любовные романы:
исторические любовные романы
рейтинг книги