Запись данные в поток при помощи системных вызовов
Процесс записывает данные в поток при помощи системных вызовов write или putmsg. Системный вызов write позволяет вести запись только обычных данных и не гарантирует соблюдение требуемых правил. Он полезен для приложений, представляющих потоки в виде последовательностей байтов.
Также на сайте relotti74.ru можно узнать много интересного на тему http://relotti74.ru/. Что означает вообще тема элитная итальянская мебель - про это написано на сайте relotti74.ru. Спасибо сайту за информацию.
Системный вызов putmsg позволяет процессу создать управляющее сообщение и сообщение с обычными данными за один прием. STREAMS объединит их в единое сообщение, у которого первая структура datab будет иметь тип M_PR0T0, а следующая — тип M_DATA.
В обоих случаях головной интерфейс потока производит копирование данных и прикладного адресного пространства в сообщения STREAMS и затем вызывает canput() для проверки наличия свободного места в потоке (отсутствия переполнения следующего модуля или драйвера). Если поток не переполнен, процедура посылает данные в нисходящем направлении посредством вызова putnext() и затем возвращает управление вызывающему процессу. Если canput() возвращает FALSE, вызывающий процесс блокируется головным интерфейсом до тех пор, пока последний не будет сделан доступным следующим модулем, управляющим потоком.
Следовательно, после завершения функций write или putmsg данные могут еще не успеть достигнуть устройства. Вызывающему процессу гарантируется копирование данных в ядро и либо достижение устройства, либо помещение их в очередь модуля или драйвера.
Процесс читает данные из потока при помощи функций read или getmsg. Системный вызов read применяется только для чтения обычных данных.
Модуль может отправлять сообщение M_SET0PTS головному интерфейсу потока, указывая ему на интерпретацию сообщений M_PR0T0 как обычных данных. После этого вызов read читает содержимое как сообщений M_DATA, так и M_PR0T0. В любом случае, системный вызов read не интересуется границами сообщений, а также не возвращает информацию об их типах. Как правило, этот вызов используется приложениями, интерпретирующими потоки как последовательности байтов.
Опубликовал katy
June 24 2015 20:21:18 ·
0 Комментариев ·
3502 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.