ВУЗ:
Составители:
6
В любом случае сбоя этой функции необходимо проверить значение errno. Если
оно равно EINTR, нужно просто повторить вызов. Простейший способ выполнения этой
операции – использование макроса TEMP_FAILURE_RETRY:
nbytes = TEMP_FAILURE_RETRY (write (desc, buffer, count));
ssize_t pwrite (int FILEDES, const void *BUFFER, size_t SIZE, off_t
OFFSET)
Функция идентична pwrite за исключением того, что запись в файл выполняется
не с текущей позиции, а с позиции, заданной OFFSET. В результате выполнения
функции указатель на позицию в файле не изменяется.
Если при компиляции установлен флаг _FILE_OFFSET_BITS == 64, вместо
этой функции вызывается pwrite64. Функция возвращает количество реально
записанных байтов. В случае ошибки возвращается –1, а переменная errno принимает
следующие значения:
EINVAL Значение OFFSET отрицательно и, следовательно, недопустимо;
ESPIPE Дескриптор файла ассоциирован с каналом или FIFO-файлом, которые
не допускают позиционирования указателя.
ssize_t pwrite64 (int FILEDES, const void *BUFFER, size_t SIZE,
off64_t OFFSET)
Эта функция идентична pwrite, за исключением того, что работает с 64-
битными файлами.
Установка указателя на позицию в файле
off_t lseek (int FILEDES, off_t OFFSET, int WHENCE)
Функция используется для изменения позиции указателя в файле, указываемом
дескриптором FILEDES. Для получения текущей позиции указателя можно
использовать следующий вызов:
lseek (DESC, 0, SEEK_CUR)
Аргумент WHENCE используется для указания способа, которым необходимо
изменить значение указателя. Он может принимать одно из следующих значений:
SEEK_SET Показывает, что указатель вычисляется как смещение с начала файла;
SEEK_CUR Показывает, что указатель вычисляется как смещение с текущего
положения. Значение смещения может быть как положительным, так и
отрицательным;
SEEK_END Показывает, что указатель вычисляется как смещение с конца файла.
Отрицательное значение смещения означает, что указатель
вычисляется как (длина_файла – значение_смещения). Положительное
значение переводит указатель за пределы файла. Если после этого
выполнить операцию записи, то пространство до нового указателя
будет заполнено нулями.
Функция возвращает результирующее значение указателя после выполнения
функции, измеряемое количеством байтов с начала файла. Если значение указателя не
может быть изменено или операция не может быть выполнена по какой-либо причине,
возвращается значение –1. Переменная errno может принимать следующие значения:
EBADF FILEDES не является дескриптором файла;
EINVAL Значение WHENCE или смещение является недопустимым;
ESPIPE FILEDES указывает на объект, для которого позиционирования не
допускается (например, канал, FIFO-файл, терминальное устройство).
Если компиляция выполнялась с флагом _FILE_OFFSET_BITS == 64, вместо
функции вызывает lseek64.
off64_t lseek64 (int FILEDES, off64_t OFFSET, int WHENCE)
В любом случае сбоя этой функции необходимо проверить значение errno. Если оно равно EINTR, нужно просто повторить вызов. Простейший способ выполнения этой операции – использование макроса TEMP_FAILURE_RETRY: nbytes = TEMP_FAILURE_RETRY (write (desc, buffer, count)); ssize_t pwrite (int FILEDES, const void *BUFFER, size_t SIZE, off_t OFFSET) Функция идентична pwrite за исключением того, что запись в файл выполняется не с текущей позиции, а с позиции, заданной OFFSET. В результате выполнения функции указатель на позицию в файле не изменяется. Если при компиляции установлен флаг _FILE_OFFSET_BITS == 64, вместо этой функции вызывается pwrite64. Функция возвращает количество реально записанных байтов. В случае ошибки возвращается –1, а переменная errno принимает следующие значения: EINVAL Значение OFFSET отрицательно и, следовательно, недопустимо; ESPIPE Дескриптор файла ассоциирован с каналом или FIFO-файлом, которые не допускают позиционирования указателя. ssize_t pwrite64 (int FILEDES, const void *BUFFER, size_t SIZE, off64_t OFFSET) Эта функция идентична pwrite, за исключением того, что работает с 64- битными файлами. Установка указателя на позицию в файле off_t lseek (int FILEDES, off_t OFFSET, int WHENCE) Функция используется для изменения позиции указателя в файле, указываемом дескриптором FILEDES. Для получения текущей позиции указателя можно использовать следующий вызов: lseek (DESC, 0, SEEK_CUR) Аргумент WHENCE используется для указания способа, которым необходимо изменить значение указателя. Он может принимать одно из следующих значений: SEEK_SET Показывает, что указатель вычисляется как смещение с начала файла; SEEK_CUR Показывает, что указатель вычисляется как смещение с текущего положения. Значение смещения может быть как положительным, так и отрицательным; SEEK_END Показывает, что указатель вычисляется как смещение с конца файла. Отрицательное значение смещения означает, что указатель вычисляется как (длина_файла – значение_смещения). Положительное значение переводит указатель за пределы файла. Если после этого выполнить операцию записи, то пространство до нового указателя будет заполнено нулями. Функция возвращает результирующее значение указателя после выполнения функции, измеряемое количеством байтов с начала файла. Если значение указателя не может быть изменено или операция не может быть выполнена по какой-либо причине, возвращается значение –1. Переменная errno может принимать следующие значения: EBADF FILEDES не является дескриптором файла; EINVAL Значение WHENCE или смещение является недопустимым; ESPIPE FILEDES указывает на объект, для которого позиционирования не допускается (например, канал, FIFO-файл, терминальное устройство). Если компиляция выполнялась с флагом _FILE_OFFSET_BITS == 64, вместо функции вызывает lseek64. off64_t lseek64 (int FILEDES, off64_t OFFSET, int WHENCE) 6
Страницы
- « первая
- ‹ предыдущая
- …
- 4
- 5
- 6
- 7
- 8
- …
- следующая ›
- последняя »