truncate, ftruncate - set a file to a specified length
int truncate(const char *path, off_t length);
int ftruncate(int fildes, off_t length);
The truncate() function causes the regular file named by
path to have a size of length bytes.
The ftruncate() function causes the regular file referenced
by fildes to have a size of length bytes.
The effect of ftruncate() and truncate() on other types of
files is unspecified. If the file previously was larger
than length, the extra data is lost. If it was previously
shorter than length, bytes between the old and new lengths
are read as zeroes. With ftruncate(), the file must be open
for writing; for truncate(), the process must have write
permission for the file.
If the request would cause the file size to exceed the soft
file size limit for the process, the request will fail and
the implementation will generate the SIGXFSZ signal for the
These functions do not modify the file offset for any open
file descriptions associated with the file. On successful
completion, if the file size is changed, these functions
will mark for update the st_ctime and st_mtime fields of the
file, and if the file is a regular file, the S_ISUID and
S_ISGID bits of the file mode may be cleared.
Upon successful completion, ftruncate() and truncate()
return 0. Otherwise, -1 is returned and errno is set to
indicate the error.
The ftruncate() and truncate() functions will fail if:
EINTR A signal was caught during execution.
The length argument was less than 0.
EFBIG or EINVAL
The length argument was greater than the maximum file
EIO An I/O error occurred while reading from or writing to
a file system.
The truncate() function will fail if:
A component of the path prefix denies search permis-
sion, or write permission is denied on the file.
The path argument points outside the process' allo-
cated address space.
The path argument is not an ordinary file.
The named file is a directory.
ELOOP Too many symbolic links were encountered in resolving
The maximum number of file descriptors available to
the process has been reached.
The length of the specified pathname exceeds PATH_MAX
bytes, or the length of a component of the pathname
exceeds NAME_MAX bytes.
A component of path does not name an existing file or
path is an empty string.
Additional space could not be allocated for the system
A component of the path prefix of path is not a direc-
The path argument points to a remote machine and the
link to that machine is no longer active.
EROFS The named file resides on a read-only file system.
The ftruncate() function will fail if:
The file exists, mandatory file/record locking is set,
and there are outstanding record locks on the file
EBADF or EINVAL
The fildes argument is not a file descriptor open for
EFBIG The file is a regular file and length is greater than
the offset maximum established in the open file
description associated with fildes.
The fildes argument references a file that was opened
without write permission.
The fildes argument does not correspond to an ordinary
The fildes argument points to a remote machine and the
link to that machine is no longer active.
The truncate() function may fail if:
Pathname resolution of a symbolic link produced an
intermediate result whose
The truncate() and ftruncate() functions have transitional
interfaces for 64-bit file offsets. See lf64(5).
When a UFS file system is mounted with logging enabled, file
system transactions that free blocks from files might not
actually add those freed blocks to the file system's free
list until some unspecified time in the future. This
behavior improves file system performance but does not con-
form to the POSIX, Single UNIX Specification, SPARC Confor-
mance Definition, System V Application Binary Interface,
System V Interface Definition, and X/Open Portability Guide
Standards, which require that freed space be available
immediately. To enable standards conformance regarding file
deletions or to address the problem of not being able to
grow files on a relatively full UFS file system even after
files have been deleted, disable UFS logging (see
See attributes(5) for descriptions of the following attri-
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
| MT-Level | MT-Safe |
mount_ufs(1M), chmod(2), fcntl(2), open(2), attributes(5),
Man(1) output converted with