Книга: Программирование для Linux. Профессиональный подход
Доступ к FIFO-файлу
Доступ к FIFO-файлу
К FIFO-файлу можно обращаться как к обычному файлу. При организации межзадачного взаимодействия одна программа должна открыть файл для записи, а другая - для чтения. Над файлом можно выполнять как низкоуровневые (open()
, write()
, read()
, close()
и др.), так и высокоуровневые (fopen()
, fprintf()
, fscanf()
, fclose()
и др.) функции.
Например, на низком уровне запись блока данных в FIFO-файл осуществляется следующим образом:
int fd = open(fifo_path, O_WRONLY);
write(fd, data, data_length);
close(fd);
А так выполняется чтение строки из FIFO-файла на высоком уровне:
FILE* fifo = fopen(fifo_path, "r");
fscanf(fifo, "%s", buffer);
fclose(fifo);
У FIFO-файла одновременно может быть несколько читающих и записывающих программ. Входные потоки разбиваются на атомарные блоки, размер которых определяется константой PIPE_BUF
(4 Кбайт в Linux). Если несколько программ параллельно друг другу осуществляют запись в файл, их блоки будут чередоваться. То же самое относится к программам. одновременно читающим данные из файла.
- Создание FIFO-файла
- Что делать, если при установке принтера появляется сообщение Невозможно завершение операции. Подсистема печати недоступн...
- 9.4. Права доступа к squid
- Глава 29 Доступ к канальному уровню
- 10.5. Транзакции и пути доступа меню
- Настройка доступа пользователей к рабочей книге
- 3.5 Проблемы доступа при использовании нескольких протоколов
- Доступ к существующим рабочим областям для документов
- Есть ли быстрый способ доступа к папкам?
- Как открыть доступ к своей папке другим пользователям?
- Я открыл доступ к папке
- Как сделать так, чтобы папка на одном компьютере в сети была доступна для другого компьютера, даже если первый выключен?