truncate, ftruncate - truncate a file to a specified
length
SYNOPSIS
#include <unistd.h>
int truncate(const char *path, off_t length);
int ftruncate(int fd, off_t length);
DESCRIPTION
Truncate causes the file named by path or referenced by fd
to be truncated to at most length bytes in size. If the
file previously was larger than this size, the extra data
is lost. If the file previously was shorter, it is
unspecified whether the file is left unchanged or is
extended. In the latter case the extended part reads as
zero bytes. With ftruncate, the file must be open for
writing.
RETURN VALUE
On success, zero is returned. On error, -1 is returned,
and errno is set appropriately.
ERRORS
For truncate:
ENOTDIR
A component of the path prefix is not a directory.
ENAMETOOLONG
A component of a pathname exceeded 255 characters,
or an entire path name exceeded 1023 characters.
ENOENT The named file does not exist.
EACCES Search permission is denied for a component of the
path prefix.
EACCES The named file is not writable by the user.
ELOOP Too many symbolic links were encountered in trans
lating the pathname.
EISDIR The named file is a directory.
EROFS The named file resides on a read-only file system.
ETXTBSY
The file is a pure procedure (shared text) file
that is being executed.
EIO An I/O error occurred updating the inode.
space.
For ftruncate:
EBADF The fd is not a valid descriptor.
EINVAL The fd references a socket, not a file.
EINVAL The fd is not open for writing.
CONFORMING TO
4.4BSD, SVr4 (these function calls first appeared in BSD
4.2). SVr4 documents additional truncate error conditions
EINTR, EMFILE, EMULTIHP, ENAMETOOLONG, ENFILE, ENOLINK,
ENOTDIR. SVr4 documents for ftruncate additional EAGAIN
and EINTR error conditions. POSIX has ftruncate but not
truncate.
The POSIX standard does not define what happens if the
file has fewer bytes than length.
BUGS
These calls should be generalized to allow ranges of bytes
in a file to be discarded.
SEE ALSO
open(2)
Man(1) output converted with
man2html