ftruncate(), ftruncate64()

Обрезать файл

Прототип:

#include <unistd.h>
int ftruncate( int fildes,
off_t length );
int ftruncate64( int fildes,
off64_t length );

Аргументы:

fildes
Дескриптор файла, который необходимо обрезать.
length
Ожидаемая длина файла в байтах.

Библиотека:

libc

Описание:

Данные функции изменяют размер файла, на который ссылается fildes, равным length байтов. Если размер файл изначально превышает length, дополнительные данные удаляются (похоже на использование опции F_FREESP с fcntl()). Если размер файла изначально меньше length, файл дополняется символами NUL (похоже на использование опции F_ALLOCSP с fcntl()).

Значение указателя позиции не изменяется во время вызова ftruncate().

В случае удачного завершения функция ftruncate() function помечает поля файла st_ctime и st_mtime для обновления. Если функция ftruncate() завершена неуспешно, файл не изменяется.

Возвращаемое значение:

0
Успешное завершение.
-1
Возникла ошибка. Код ошибки записан в errno.

Коды ошибок:

EBADF
Аргумент fildes не является корректным файловым дескриптором.
EFBIG
Для обычного файла length больше, чем смещение, максимально возможное для файла.
EINTR
Во время вызова ftruncate() перехвачен сигнал.
EINVAL
Аргумент fildes ссылается на файл, для которого эта операция невозможна, аргумент filedes не открыт для записи или аргумент length меньше, чем минимальный размер файла для определенной файловой системы.
EIO
Во время чтения или записи в файловой системе возникла ошибка ввода/вывода.
ENOSYS
Функция ftruncate() не реализована для файловой системы, в которой находится filedes.
ENOTSUP
Функция ftruncate() реализована для оперделенной файловой системы, но определенные операции (F_ALLOCSP или F_FREESP; смотрите fcntl()) не поддерживаются.
EROFS
Файл расположен в файловой системе, доступной только для чтения.

Классификация:

ftruncate() — POSIX 1003.1; ftruncate64() — Поддержка больших файлов

Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

mmap(), open(), shm_open(), truncate()




Предыдущий раздел: Описание API системной библиотеки