truncate(2) System Calls Manual truncate(2)
Name
truncate, ftruncate - truncate a file to a specified length
Syntax
truncate(path, length)
char *path;
int length;
ftruncate(fd, length)
int fd, length;
Description
The system call causes the file named by path or referenced by fd to be truncated to, at most, length bytes in size. If the file previ-
ously was larger than this size, the extra data is lost. With the file must be open for writing.
Return Values
A value of zero (0) is returned if the call succeeds. If the call fails, a -1 is returned, and the global variable errno specifies the
error.
Restrictions
Partial blocks discarded as the result of truncation are not zero-filled. This can result in holes in files that do not read as zero.
Diagnostics
The system call succeeds unless:
[ENOTDIR] A component of the path prefix is not a directory.
[ENOENT] The named file does not exist.
[EACCES] Search permission is denied for a component of the path prefix.
[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.
[EFAULT] The path points outside the process's allocated address space.
[ENAMETOOLONG] A component of a pathname exceeded 255 characters, or an entire path name exceeded 1023 characters.
[ELOOP] Too many symbolic links were encountered in translating the pathname.
[EIO] An I/O error occurred updating the inode.
The system call succeeds unless:
[EBADF] The fd is not a valid descriptor.
[EINVAL] The fd references a socket, not a file.
[ETIMEDOUT] A connect request or remote file operation failed, because the connected party did not properly respond after a period of
time that is dependent on the communications protocol.
See Also
open(2)
truncate(2)