Основы программирования в Linux
Шрифт:
Несмотря на то, что этот предел не слишком важен в простом случае с одним записывающим каналом FIFO и одним читающим FIFO, очень распространено использование одного канала FIFO, позволяющего разным программам отправлять запросы к этому единственному каналу FIFO. Если несколько разных программ попытаются писать в FIFO в одно и то же время, жизненно важно, чтобы блоки данных из разных программ не перемежались друг с другом, т. е. каждая операция write должна быть "атомарной". Как это сделать?
Если вы ручаетесь, что все ваши запросы
Выполните упражнение 13.12.
Для того чтобы увидеть, как несвязанные процессы могут общаться с помощью именованных каналов, вам понадобятся две отдельные программы fifo3.c и fifo4.c.
1. Первая программа — поставщик. Она создает канал, если требуется, и затем записывает в него данные как можно быстрее.
Поскольку пример иллюстративный, нас не интересуют конкретные данные, и мы не беспокоимся об инициализации буфера, В обоих листингах затененные строки содержат изменения, внесенные в программу fifo2.c помимо удаления кода со всеми аргументами командной строки.
2. Вторая программа, потребитель, гораздо проще. Она читает и выбрасывает данные из канала FIFO.
Северные сказки
Детские:
сказки
рейтинг книги
Американские боги. Король горной долины. Сыновья Ананси
Фантастика:
научная фантастика
рейтинг книги
Война
6. Играть, чтобы жить
Фантастика:
фэнтези
боевая фантастика
рпг
рейтинг книги
Дневник (1887-1910)
Проза:
проза прочее
рейтинг книги