[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Упражнения

Напишите две программы, одна из которых шлет сообщения другой.
Получатель распечатывает содержимое сообщения, тип и значение,
возвращенное msgrcv(2). Напишите программы так, чтобы они не
исполнялись родственными процессами.
Сделайте программы как можно проще. Для этого упражнения вам не нужна
никакая проверка ошибок. Используйте численную форму вашего
идентификатора пользователя в качестве ключа.
Замечание: Не называйте вашу программу send, потому что существует
утилита send(1), работающая с RJE.
Если позволит время, вы можете установить права доступа для очереди
так, чтобы ваши одногруппники, зная ключ очереди, могли читать из нее
или писать в нее. К обоим программам должен быть добавлен цикл, чтобы
иметь дело с многими сообщениями. Если вы будете разделять
идентификатор очереди с другими пользователями, вы должны сказать друг
другу ваши идентификаторы пользователя и использовать их как типы
сообщений.
Замечание: ipcs -q -o распечатывает количество сообщений в очереди и
их общий размер.
Рассылка одного сообщения нескольким процессам
Напишите две программы: отправитель и получатель. Отправитель
принимает текст с клавиатуры и рассылает сообщения нескольким копиям
программы-получателя. Получатель сообщения распечатывает свое имя
программы (argv[0]) и содержимое сообщения. Отправитель продолжает
работу, пока не встретит конец файла. Тогда он рассылает всем
получателям сообщение-ограничитель. Как только получатель заканчивает
свою очередь сообщений, он отправляет сообщение отправителю. После
получения такого подтверждения от всех получателей, отправитель
удаляет очередь.
Несколько процессов, сообщающих состояние процессу-мастеру
Напишите две программы, общающиеся через очередь. Одна из программ -
мастер - будет получать сообщения, генерируемые другими программами -
отправителями. Эти сообщения могут изображать состояние или степень
готовности отправителя. При получении, мастер распечатывает сообщение
и какую-либо идентификацию его отправителя. Перед завершением, каждый
отправитель посылает сообщение-ограничитель. После получения таких
ограничителей от всех отправителей, мастер удаляет очередь и
завершается.