ВУЗ:
Составители:
52
ENFILE операционная система имеет слишком много дескрипторов
открытых файлов;
EACCESS процесс не имеет привилегий для создания гнезда с
заданным способом взаимодействия и протоколом;
ENOBUFS внутреннее буферное пространство операционной системы
переполнено.
Возвращаемый дескриптор файла поддерживает операции чтения и записи, но
не поддерживает операции позиционирования.
Закрытие гнезда
При завершении использования гнезда, оно может быть закрыто с помощью
вызова close. Если к моменту вызова передача данных еще не закончена, обычно
функция ожидает окончания передачи, а затем закрывает дескриптор.
Прервать передачу данных через гнездо можно прервать с помощью вызова
функции
int shutdown (int SOCKET, int HOW)
Функция закрывает соединение гнезда SOCKET. Аргумент HOW может
принимать следующие значения:
0 останавливает получение данных на заданное гнездо. Если данные еще
передаются, передача прекращается;
1 останавливает попытки передать данные;
2 останавливает и получение и передачу данных.
В случае успешного выполнения функция возвращает значение 0, в противном
случае возвращается -1. Переменная errno может принимать следующие значения:
EBADF SOCKET не является правильным дескриптором файла;
ENOTSOCK SOCKET не является гнездом;
ENOTCONN нет соединения с SOCKET.
Пары гнезд
Пара гнезд состоит из двух соединенных (но не имеющих имен) гнезд. такая
пара используется как неименованные каналы, за исключением двунаправленности
передачи данных. Пара гнезд создается с помощью следующей функции.
int socketpair (int NAMESPACE, int STYLE, int PROTOCOL,
int FILEDES[2])
Функция создает пару гнезд, возвращаемых в FILEDES[0] и FILEDES[1]. Пара
гнезд представляет собой дуплексный канал передачи данных, оба гнезда доступны как
на чтение, так и на запись.
Все аргументы соответствуют соответствующим аргументам функции socket.
Пространство имен должно быть AF_LOCAL, протокол - по умолчанию (равен 0).
Функция возвращает 0, если выполнилась успешно, в противном случае
возвращается -1. Переменная errno может принимать одно из следующих значений:
EMFILE процесс имеет слишком много открытых дескрипторов
файлов;
EAFNOSUPPORT задаваемое пространство имен не поддерживается;
EPROTONOSUPPORT заданный протокол не поддерживается;
EOPNOTSUPP заданный протокол не поддерживает создание пары гнезд.
ENFILE операционная система имеет слишком много дескрипторов открытых файлов; EACCESS процесс не имеет привилегий для создания гнезда с заданным способом взаимодействия и протоколом; ENOBUFS внутреннее буферное пространство операционной системы переполнено. Возвращаемый дескриптор файла поддерживает операции чтения и записи, но не поддерживает операции позиционирования. Закрытие гнезда При завершении использования гнезда, оно может быть закрыто с помощью вызова close. Если к моменту вызова передача данных еще не закончена, обычно функция ожидает окончания передачи, а затем закрывает дескриптор. Прервать передачу данных через гнездо можно прервать с помощью вызова функции int shutdown (int SOCKET, int HOW) Функция закрывает соединение гнезда SOCKET. Аргумент HOW может принимать следующие значения: 0 останавливает получение данных на заданное гнездо. Если данные еще передаются, передача прекращается; 1 останавливает попытки передать данные; 2 останавливает и получение и передачу данных. В случае успешного выполнения функция возвращает значение 0, в противном случае возвращается -1. Переменная errno может принимать следующие значения: EBADF SOCKET не является правильным дескриптором файла; ENOTSOCK SOCKET не является гнездом; ENOTCONN нет соединения с SOCKET. Пары гнезд Пара гнезд состоит из двух соединенных (но не имеющих имен) гнезд. такая пара используется как неименованные каналы, за исключением двунаправленности передачи данных. Пара гнезд создается с помощью следующей функции. int socketpair (int NAMESPACE, int STYLE, int PROTOCOL, int FILEDES[2]) Функция создает пару гнезд, возвращаемых в FILEDES[0] и FILEDES[1]. Пара гнезд представляет собой дуплексный канал передачи данных, оба гнезда доступны как на чтение, так и на запись. Все аргументы соответствуют соответствующим аргументам функции socket. Пространство имен должно быть AF_LOCAL, протокол - по умолчанию (равен 0). Функция возвращает 0, если выполнилась успешно, в противном случае возвращается -1. Переменная errno может принимать одно из следующих значений: EMFILE процесс имеет слишком много открытых дескрипторов файлов; EAFNOSUPPORT задаваемое пространство имен не поддерживается; EPROTONOSUPPORT заданный протокол не поддерживается; EOPNOTSUPP заданный протокол не поддерживает создание пары гнезд. 52
Страницы
- « первая
- ‹ предыдущая
- …
- 50
- 51
- 52
- 53
- 54
- …
- следующая ›
- последняя »