ftruncate.3p (4458B)
- '\" et
- .TH FTRUNCATE "3P" 2017 "IEEE/The Open Group" "POSIX Programmer's Manual"
- .\"
- .SH PROLOG
- This manual page is part of the POSIX Programmer's Manual.
- The Linux implementation of this interface may differ (consult
- the corresponding Linux manual page for details of Linux behavior),
- or the interface may not be implemented on Linux.
- .\"
- .SH NAME
- ftruncate
- \(em truncate a file to a specified length
- .SH SYNOPSIS
- .LP
- .nf
- #include <unistd.h>
- .P
- int ftruncate(int \fIfildes\fP, off_t \fIlength\fP);
- .fi
- .SH DESCRIPTION
- If
- .IR fildes
- is not a valid file descriptor open for writing, the
- \fIftruncate\fR()
- function shall fail.
- .P
- If
- .IR fildes
- refers to a regular file, the
- \fIftruncate\fR()
- function shall cause the size of the file to be truncated to
- .IR length .
- If the size of the file previously exceeded
- .IR length ,
- the extra data shall no longer be available to reads on the file. If
- the file previously was smaller than this size,
- \fIftruncate\fR()
- shall increase the size of the file. If the file size is increased,
- the extended area shall appear as if it were zero-filled. The value of
- the seek pointer shall not be modified by a call to
- \fIftruncate\fR().
- .P
- Upon successful completion, if
- .IR fildes
- refers to a regular file,
- \fIftruncate\fR()
- shall mark for update the last data modification and last file
- status change timestamps of the file and the S_ISUID and S_ISGID bits
- of the file mode may be cleared. If the
- \fIftruncate\fR()
- function is unsuccessful, the file is unaffected.
- .P
- If the request would cause the file size to exceed the soft file size
- limit for the process, the request shall fail and the implementation
- shall generate the SIGXFSZ signal for the thread.
- .P
- If
- .IR fildes
- refers to a directory,
- \fIftruncate\fR()
- shall fail.
- .P
- If
- .IR fildes
- refers to any other file type, except a shared memory object, the
- result is unspecified.
- .P
- If
- .IR fildes
- refers to a shared memory object,
- \fIftruncate\fR()
- shall set the size of the shared memory object to
- .IR length .
- .P
- If the effect of
- \fIftruncate\fR()
- is to decrease the size of a memory mapped file
- or a shared memory object
- and whole pages beyond the new end were previously mapped, then the
- whole pages beyond the new end shall be discarded.
- .P
- References to discarded pages shall result in the generation of a
- SIGBUS signal.
- .P
- If the effect of
- \fIftruncate\fR()
- is to increase the size of a memory object, it is unspecified
- whether the contents of any mapped pages between the old end-of-file
- and the new are flushed to the underlying object.
- .SH "RETURN VALUE"
- Upon successful completion,
- \fIftruncate\fR()
- shall return 0; otherwise, \-1 shall be returned and
- .IR errno
- set to indicate the error.
- .SH ERRORS
- The
- \fIftruncate\fR()
- function shall fail if:
- .TP
- .BR EINTR
- A signal was caught during execution.
- .TP
- .BR EINVAL
- The
- .IR length
- argument was less than 0.
- .TP
- .BR EFBIG " or " EINVAL
- .br
- The
- .IR length
- argument was greater than the maximum file size.
- .TP
- .BR EFBIG
- The file is a regular file and
- .IR length
- is greater than the offset maximum established in the open file
- description associated with
- .IR fildes .
- .TP
- .BR EIO
- An I/O error occurred while reading from or writing to a file system.
- .TP
- .BR EBADF " or " EINVAL
- .br
- The
- .IR fildes
- argument is not a file descriptor open for writing.
- .LP
- .IR "The following sections are informative."
- .SH EXAMPLES
- None.
- .SH "APPLICATION USAGE"
- None.
- .SH RATIONALE
- None.
- .SH "FUTURE DIRECTIONS"
- None.
- .SH "SEE ALSO"
- .IR "\fIopen\fR\^(\|)",
- .IR "\fItruncate\fR\^(\|)"
- .P
- The Base Definitions volume of POSIX.1\(hy2017,
- .IR "\fB<unistd.h>\fP"
- .\"
- .SH COPYRIGHT
- Portions of this text are reprinted and reproduced in electronic form
- from IEEE Std 1003.1-2017, Standard for Information Technology
- -- Portable Operating System Interface (POSIX), The Open Group Base
- Specifications Issue 7, 2018 Edition,
- Copyright (C) 2018 by the Institute of
- Electrical and Electronics Engineers, Inc and The Open Group.
- In the event of any discrepancy between this version and the original IEEE and
- The Open Group Standard, the original IEEE and The Open Group Standard
- is the referee document. The original Standard can be obtained online at
- http://www.opengroup.org/unix/online.html .
- .PP
- Any typographical or formatting errors that appear
- in this page are most likely
- to have been introduced during the conversion of the source files to
- man page format. To report such errors, see
- https://www.kernel.org/doc/man-pages/reporting_bugs.html .