Standard C Library Functions truncate(3C)
NAME
truncate, ftruncate - set a file to a specified length
SYNOPSIS
#include
int truncate(const char *path, offt length);
int ftruncate(int fildes, offt length);
DESCRIPTION
The truncate() function causes the regular file named by
path to have a size equal to length bytes.
If the file previously was larger than length, the extra
data is discarded. If the file was previously shorter than
length, its size is increased, and the extended area appears
as if it were zero-filled.
The application must ensure that the process has write per-
mission for the file.
This function does not modify the file offset for any open
file descriptions associated with the file.
The ftruncate() function causes the regular file referenced
by fildes to be truncated to length. If the size of the file
previously exceeded length, the extra data is no longer
available to reads on the file. If the file previously was
smaller than this size, ftruncate() increases the size of
the file with the extended area appearing as if it were
zero-filled. The value of the seek pointer is not modified
by a call to ftruncate().
The ftruncate() function works only with regular files and
shared memory. If fildes refers to a shared memory object,
ftruncate() sets the size of the shared memory object to
length. If fildes refers to a directory or is not a valid
file descriptor open for writing, ftruncate() fails.
If the effect of ftruncate() is to decrease the size of a
shared memory object or memory mapped file and whole pages
beyond the new end were previously mapped, then the whole
pages beyond the new end shall be discarded.
SunOS 5.11 Last change: 5 Apr 2002 1
Standard C Library Functions truncate(3C)
If the effect of ftruncate() is to increase the size of a
shared memory object, it is unspecified if the contents of
any mapped pages between the old end-of-file and the new are
flushed to the underlying object.
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 stctime and stmtime fields of the
file, and if the file is a regular file, the SISUID and
SISGID bits of the file mode are left unchanged.
If the request would cause the file size to exceed the soft
file size limit for the process, the request will fail and a
SIGXFSZ signal will be generated for the process.
RETURN VALUES
Upon successful completion, ftruncate() and truncate()
return 0. Otherwise, -1 is returned and errno is set to
indicate the error.
ERORS
The ftruncate() and truncate() functions will fail if:
EINTR A signal was caught during execution.
EINVAL The length argument was less than 0.
EFBIG or EINVAL The length argument was greater than the
maximum file size.
EIO An I/O error occurred while reading from
or writing to a file system.
EROFS The named file resides on a read-only
file system.
The truncate() function will fail if:
EACES A component of the path prefix denies search
permission, or write permission is denied on
the file.
SunOS 5.11 Last change: 5 Apr 2002 2
Standard C Library Functions truncate(3C)
EFAULT The path argument points outside the pro-
cess' allocated address space.
EINVAL The path argument is not an ordinary file.
EISDIR The named file is a directory.
ELOP Too many symbolic links were encountered in
resolving path.
EMFILE The maximum number of file descriptors
available to the process has been reached.
ENAMETOLONG The length of the specified pathname exceeds
{PATHMAX} bytes, or the length of a com-
ponent of the pathname exceeds {NAMEMAX}
bytes.
ENOENT A component of path does not name an exist-
ing file or path is an empty string.
ENFILE Additional space could not be allocated for
the system file table.
ENOTDIR A component of the path prefix of path is
not a directory.
ENOLINK The path argument points to a remote machine
and the link to that machine is no longer
active.
The ftruncate() function will fail if:
EAGAIN The file exists, mandatory file/record
locking is set, and there are outstanding
record locks on the file (see chmod(2)).
EBADF or EINVAL The fildes argument is not a file
descriptor open for writing.
SunOS 5.11 Last change: 5 Apr 2002 3
Standard C Library Functions truncate(3C)
EFBIG The file is a regular file and length is
greater than the offset maximum esta-
blished in the open file description
associated with fildes.
EINVAL The fildes argument references a file
that was opened without write permission.
EINVAL The fildes argument does not correspond
to an ordinary file.
ENOLINK The fildes argument points to a remote
machine and the link to that machine is
no longer active.
The truncate() function may fail if:
ENAMETOLONG Pathname resolution of a symbolic link pro-
duced an intermediate result whose length
exceeds {PATHMAX}.
USAGE
The truncate() and ftruncate() functions have transitional
interfaces for 64-bit file offsets. See lf64(5).
ATRIBUTES
See attributes(5) for descriptions of the following attri-
butes:
ATRIBUTE TYPE ATRIBUTE VALUE
Interface Stability Standard
MT-Level MT-Safe
SEE ALSO
chmod(2), fcntl(2), open(2), attributes(5), lf64(5), stan-
dards(5)
SunOS 5.11 Last change: 5 Apr 2002 4
|