Unix Man (Справочное руководство)


PUTMSG(2)


PUTMSG(2)

НАЗВАНИЕ


putmsg - посылка сообщения в поток, ассоциированный с псевдоустройством

СИНТАКСИС

#include <stropts.h>

int putmsg (fd, ctlptr, dataptr, flags) int fd; struct strbuf *ctlptr; struct strbuf *dataptr; int flags;

ОПИСАНИЕ


Системный вызов putmsg создает сообщение [см. ] по содержимому буферов, указанных пользователем, и посылает сообщение в поток. Сообщение может состоять из двух частей: области данных и управляющей области, которые берутся из разных буферов (см. ниже). Семантика каждой части определяется модулем потока, который получает это сообщение.

Аргумент fd задает дескриптор файла, ассоциированный с открытым потоком.

Аргументы ctlptr и dataptr - это указатели на структуру типа strbuf, содержащую следующие элементы:

int maxlen; /* Максимальная длина буфера */ int len; /* Длина извлеченной информации */ char *buf; /* Указатель на буфер */

Аргумент ctlptr указывает на структуру, описывающую управляющую область сообщения, если таковая имеется. Компонент buf указывает на буфер, в котором размещается управляющая информация, а len задает количество байт, которое должно быть послано. Поле maxlen в системном вызове putmsg не используется [см. ]. Таким же образом dataptr задает область данных, если таковая имеется, которые должны быть включены в сообщение.

Аргумент flags может принимать два значения: 0 или RS_HIPRI (см. ниже).

Чтобы послать данные в сообщении, аргумент dataptr должен быть отличен от NULL, а значение компонента len должно быть неотрицательным. Чтобы послать управляющую информацию, соответствующие значения должны быть установлены для ctlptr. Область данных (управляющая область) не будет послана, если аргумент dataptr (ctlptr) равен NULL, или значение компонента len для dataptr (ctlptr) равно -1.

Если задана управляющая область и значение переменной, на которую указывает аргумент flags, равно RS_HIPRI, посылается приоритетное сообщение. Если значение по адресу flags равно 0, посылается неприоритетное сообщение. Если не указана управляющая область и значение по адресу flags равно RS_HIPRI, системный вызов putmsg завершается неудачей, а переменная errno получает значение EINVAL. Если не указана ни управляющая область ни область данных и значение по адресу flags равно 0, сообщение не посылается и возвращается нулевой результат.




Начало  Назад  Вперед



Книжный магазин