Книга: UNIX: разработка сетевых приложений
31.4. Функции getpmsg и putpmsg
31.4. Функции getpmsg и putpmsg
Когда с выпуском SVR4 к потоковым системам была добавлена поддержка различных полос приоритета, появились новые варианты функций getmsg
и putmsg
.
#include <stropts.h>
int getpmsg(int fd, struct strbuf *ctlptr,
struct strbuf *dataptr, int *bandp, int *flagsp);
int putpmsg(int fd, const struct strbuf *ctlptr,
const struct strbuf *dataptr, int band, int flags);
Обе функции возвращают: неотрицательное значение в случае успешного выполнения, -1 в случае ошибки
Аргумент band
функции putpmsg
должен иметь значение в пределах от 0 до 255 включительно. Если аргумент flags
имеет значение MSG_BAND
, то генерируется сообщение в соответствующей полосе приоритета. Присваивание аргументу flags
значения MSG_BAND
и задание полосы 0 эквивалентно вызову функции putmsg
. Если значение аргумента flags
равно MSG_HIPRI
, то аргумент band
должен быть равен нулю, и тогда генерируется сообщение с высоким приоритетом. (Обратите внимание на то, что этот флаг имеет название, отличающееся от названия RS_HIPRI
, используемого в случае функции putmsg
.)
Два целочисленных значения, на которые указывают аргументы bandp
и flagsp
функции getpmsg
, являются аргументами типа «значение-результат». Целочисленное значение, на которое указывает аргумент flagsp
функции getpmsg
, может соответствовать MSG_HIPRI
(для чтения сообщений с высоким приоритетом), MSG_BAND
(для чтения сообщений из полосы приоритета, по меньшей мере равной целочисленному значению, на которое указывает аргумент bandp
) или MSG_ANY
(для чтения любых сообщений). По завершении функции целочисленное значение, на которое указывает аргумент bandp
, указывает на полосу приоритета прочитанного сообщения, а целое число, на которое указывает аргумент flagsp
, соответствует MSG_HIPRI
(если было прочитано сообщение с высоким приоритетом) или MSG_BAND (если было прочитано иное сообщение).
- Аргументы функции в Python
- 3. Функции
- Новые функции API для работы с Blob и массивами
- Математические функции
- Размытые функции
- 7.3. Финансовые функции
- 4.3. Логические функции и таблицы истинности
- B1.7. Функции обработки ошибок
- 9.1.4.2. Функции-оболочки: execl() и др.
- 11.5. Функции getservbyname и getservbyport
- Функции dup(2) и dup2(2)
- Применение функции scanf( )