truncate, ftruncate - truncate a file to a specified length
#include <unistd.h>
int truncate(const char *path, off_t length);
int ftruncate(int fd, off_t length);
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.
On success, zero is returned. On error, -1 is returned, and errno is
set appropriately.
For truncate:
ENOTDIR [Toc] [Back]
A component of the path prefix is not a directory.
ENAMETOOLONG [Toc] [Back]
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 translating the
pathname.
EISDIR The named file is a directory.
EROFS The named file resides on a read-only file system.
ETXTBSY [Toc] [Back]
The file is a pure procedure (shared text) file that is being
executed.
EIO An I/O error occurred updating the inode.
EFAULT Path points outside the process's allocated address 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.
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.
These calls should be generalized to allow ranges of bytes in a file to
be discarded.
open(2)
1998-12-21 TRUNCATE(2)
[ Back ] |