НАЗВАНИЕ¶
truncate, ftruncate - обрезать
файл до
указанной
длины
КРАТКАЯ
СВОДКА¶
#include <unistd.h>
int truncate(const char *path, off_t length);
int ftruncate(int fd, off_t length);
ОПИСАНИЕ¶
truncate обрезает
файл с
именем
path или
обозначенный
файловым
дескриптором
fd до
length байт.
Если файл до
этой
операции был
длиннее, то
оставшиеся
данные
теряются.
Если файл
был короче,
то не
определено,
останется ли
длина файла
неизменной
или же она
увеличится.
В последнем
случае новый
кусок файла
будет
содержать
нулевые
байты. При
использовании
ftruncate файл
должен быть
открыт для
записи.
ВОЗВРАЩАЕМОЕ
ЗНАЧЕНИЕ¶
В случае
успеха
возвращается
ноль. При
ошибке
возвращается
-1, а
errno
устанавливается
должным
образом.
ОШИБКИ¶
Для
truncate:
- ENOTDIR
-
Компонент
пути,
использованный
как каталог,
в
действительности
таковым не
является.
- ENAMETOOLONG
- Компонент
пути
превышает 255
символов
или весь
путь
превышает 1023
символа.
- ENOENT
- Файл не
существует.
- EACCES
- В одном из
компонентов
пути не
разрешен
поиск.
- EACCES
- Пользователь
не имеет
прав на
запись в
указанный
файл.
- ELOOP
- При
прохождении
пути
встречено
слишком
много
символических
ссылок.
- EISDIR
- Указанный
файл
является
каталогом.
- EROFS
- Файл
находится
на файловой
системе,
смонтированной
только для
чтения.
- ETXTBSY
- Файл
является
исполняемым
и в
настоящий
момент
выполняется.
- EIO
- При
обновлении
inode произошла
ошибка
ввода-вывода.
- EFAULT
- path
указывает
за пределы
доступного
адресного
пространства.
Для
ftruncate:
- EBADF
- Неверный
файловый
дескриптор
fd.
- EINVAL
- Дескриптор
fd ссылается
на сокет, а не
на файл.
- EINVAL
- Дескриптор
fd не открыт
для записи.
СООТВЕТСТВИЕ
СТАНДАРТАМ¶
4.4BSD, SVr4 (эти
системные
вызовы
впервые
появились в BSD
4.2). SVr4
документирует
дополнительные
коды ошибок
truncate: EINTR, EMFILE, EMULTIHP, ENAMETOOLONG, ENFILE, ENOLINK,
ENOTDIR. SVr4
документирует
дополнительные
коды ошибок
ftruncate EAGAIN и EINTR. POSIX
содержит
ftruncate,
но не
truncate.
Стандарт POSIX не
определяет,
что
произойдет,
если в файле
меньше байт,
чем
length.
ОШИБКИ В
РЕАЛИЗАЦИИ¶
Эти
системные
вызовы
должны быть
обобщены,
чтобы
разрешить
отбрасывание
целых
участков
файла.
СМОТРИ
ТАКЖЕ¶
open(2)
ПЕРЕВОД¶
Copyright (C) Alexey Mahotkin <alexm@hsys.msk.ru> 1999-2000