The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

sendfile ()
  • sendfile (2) ( FreeBSD man: Системные вызовы )
  • >> sendfile (2) ( Русские man: Системные вызовы )
  • sendfile (2) ( Linux man: Системные вызовы )
  • sendfile (3) ( Solaris man: Библиотечные вызовы )
  • Ключ sendfile обнаружен в базе ключевых слов.
  •  

    НАЗВАНИЕ

    sendfile - производит обмен данными между описателями файлов  

    СИНТАКСИС

    #include <sys/sendfile.h>

    ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count);  

    ОПИСАНИЕ

    Этот вызов производит обмен данными между двумя описателями. Один или оба описателя могут быть сокетами (см. ниже). in_fd должен быть открытым для чтения описателем файла, а out_fd должен быть описателем, открытым для записи. offset является переменной, указывающей sendfile() начало необходимых для считывания данных. После выполнения функции sendfile() эта переменная указывает на байт, находящийся за последним считанным байтом. count это количество байтов, подлежащих копированию, между двумя описателями файлов.

    Так-как это копирование выполняется без участия ядра, то sendfile() не тратит время на пересылку данных из/в область пользователя.

     

    ЗАМЕЧАНИЯ

    Sendfile не изменяет указатель in_fd, но изменяет указатель out_fd. Если Вы хотите использовать sendfile для пересылки файлов в сокет TCP и требуется послать заголовочные данные в начало содержимого файлов, то обращайтесь за помощью к опции TCP_CORK в tcp(7) Это поможет уменьшить количество пакетов и оптимизировать выполнение функции.

    В настоящее время описатель из которого читаются данные, не может соответствовать сокету, он может соответствовать файлу, который поддерживает mmap()-подобные операции.

     

    ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ

    Если пересылка прошла успешно, то возвращается значение out_fd, где указано количество переданных байтов. При ошибке возвращается -1, а переменной errno присваивается номер ошибки.  

    НАЙДЕННЫЕ ОШИБКИ

    EBADF
    Входной файл не был открыт для чтения или результирующий файл не был открыт для записи.
    EINVAL
    Неправильный описатель, или нет прав на доступ к нему.
    ENOMEM
    Не хватает памяти для чтения in_fd.
    EIO
    Неизвестная ошибка при чтении in_fd.
     

    ВЕРСИИ

    sendfile впервые включена в Linux 2.2. Файл заголовков <sys/sendfile.h> представлен начиная с glibc2.1.

    Другие ОС семейства Unix часто используют sendfile с различным синтаксисом. Эта функция не должна быть использована в программах, переносимых в другие системы.  

    СМ. ТАКЖЕ

    socket(2), open(2)


     

    Index

    НАЗВАНИЕ
    СИНТАКСИС
    ОПИСАНИЕ
    ЗАМЕЧАНИЯ
    ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
    НАЙДЕННЫЕ ОШИБКИ
    ВЕРСИИ
    СМ. ТАКЖЕ


    Поиск по тексту MAN-ов: 




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру