truncate

Autres langues

Langue: ru

Autres versions - même langue

Version: 21 декабря 1998 (fedora - 25/11/07)

Autres sections - même nom

Section: 2 (Appels système)

НАЗВАНИЕ

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