17.0 (Russian conspect)
Сообщения - это произвольного размера набор байтов, который передаётся системой между процессами. Они хранятся в очереди.
Они бывают разного приоритета и очередь тоже, соответственно, приорететная.
Чтобы создать объект, который будет работать очередью сообщений нужно сделать системный вызов (вернее его оболочку) - MQ_OPEN()
Туда передаётся 4 параметра:
- Имя (нигде не отражается)
- Флаги
- Режим открытия
- Какие-то дополнительные параметры
Программа короткая, обычно певерх добавляется много проверок, но обычно в линуксе поверх есть стандартная виртуальная файловая система, то есть нечто что можно смонтировать с помощью mount и показывает какое-то состояние системы.
Как вызывать данную программу:
Как послать сообщение: Надо открыть очередь на запись и послать сообщение с помощью вызова MQ_SEND у которого 4 параметра:
1. очередь, которую нужно посылать
2. строчка сообщения
3. длина сообщения
4. приоритет
Приоритет - число, которое сем больше, тем приоритет выше.
Программа, которая читает сообщения выглядит примерно так:
Теперь модифицируем программу, чтобы это сообщение печаталось:
И вот какой вывод мы получим:
Вот таким способом очередь можно удалить:
Системный взов NMAP имеет несолько параметров:
Месть в памяти куда будет происходить отображение
Размер
Как именно мы эту память защищаем
Вызов STAT из дескриптора файла может получить разную иннформацию, например его длину, его хозяина и т.д.
Следующая программа открывает файл, определяет его разиер, мапит его в ыайл, а потомы выводит на стандартный вывод его содержимое. Такой cat, который работает с файлом целиком.
Давайте его скомпилируем:
Shared memory object - В отличии от очереди это просто память в которую можно просто что-либо класть и считывать
Код будет примерно похожий:
Запустим его:
Программа, которая пишет в эту память:
Запустим её: