]> git.ipfire.org Git - thirdparty/man-pages.git/blame - man2/truncate.2
chdir.2, chmod.2, chown.2, gethostname.2, getsid.2, pread.2, setpgid.2, sigaltstack...
[thirdparty/man-pages.git] / man2 / truncate.2
CommitLineData
fea681da
MK
1.\" Copyright (c) 1983, 1991 The Regents of the University of California.
2.\" All rights reserved.
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions
6.\" are met:
7.\" 1. Redistributions of source code must retain the above copyright
8.\" notice, this list of conditions and the following disclaimer.
9.\" 2. Redistributions in binary form must reproduce the above copyright
10.\" notice, this list of conditions and the following disclaimer in the
11.\" documentation and/or other materials provided with the distribution.
12.\" 3. All advertising materials mentioning features or use of this software
13.\" must display the following acknowledgement:
14.\" This product includes software developed by the University of
15.\" California, Berkeley and its contributors.
16.\" 4. Neither the name of the University nor the names of its contributors
17.\" may be used to endorse or promote products derived from this software
18.\" without specific prior written permission.
19.\"
20.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30.\" SUCH DAMAGE.
31.\"
32.\" @(#)truncate.2 6.9 (Berkeley) 3/10/91
33.\"
34.\" Modified 1993-07-24 by Rik Faith <faith@cs.unc.edu>
35.\" Modified 1996-10-22 by Eric S. Raymond <esr@thyrsus.com>
36.\" Modified 1998-12-21 by Andries Brouwer <aeb@cwi.nl>
c11b1abf 37.\" Modified 2002-01-07 by Michael Kerrisk <mtk.manpages@gmail.com>
fea681da 38.\" Modified 2002-04-06 by Andries Brouwer <aeb@cwi.nl>
c11b1abf 39.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
fea681da 40.\"
50831f9b 41.TH TRUNCATE 2 2010-09-20 "Linux" "Linux Programmer's Manual"
fea681da
MK
42.SH NAME
43truncate, ftruncate \- truncate a file to a specified length
44.SH SYNOPSIS
45.B #include <unistd.h>
46.br
47.B #include <sys/types.h>
48.sp
49.BI "int truncate(const char *" path ", off_t " length );
50.br
51.BI "int ftruncate(int " fd ", off_t " length );
cc4615cc
MK
52.sp
53.in -4n
54Feature Test Macro Requirements for glibc (see
55.BR feature_test_macros (7)):
56.in
57.ad l
1e2ba090 58.PD 0
cc4615cc 59.sp
3ca7341f 60.BR truncate ():
729166ed 61.RS 4
1e2ba090
MK
62_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
63_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
3ba63d80
MK
64.br
65|| /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L
729166ed 66.RE
1e2ba090 67.sp
3ca7341f 68.BR ftruncate ():
729166ed 69.RS 4
1e2ba090
MK
70.TP 4
71.TP
72Since glibc 2.12:
73_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
74_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED ||
75.\" FIXME The next piece seems incorrect; see
76.\" http://sourceware.org/bugzilla/show_bug.cgi?id=12037
77_POSIX_C_SOURCE\ >=\ 200809L
78.TP
79Between glibc 2.3.5 and 2.11
80_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
81_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED ||
82_POSIX_C_SOURCE\ >=\ 200112L
83.TP
84Before glibc 2.3.5:
85_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
86_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
729166ed 87.RE
1e2ba090 88.PD
cc4615cc 89.ad b
fea681da
MK
90.SH DESCRIPTION
91The
310b7919 92.BR truncate ()
fea681da 93and
310b7919 94.BR ftruncate ()
fea681da
MK
95functions cause the regular file named by
96.I path
97or referenced by
98.I fd
99to be truncated to a size of precisely
100.I length
101bytes.
102.LP
c13182ef 103If the file previously was larger than this size, the extra data is lost.
fea681da 104If the file previously was shorter, it is extended, and
f81fb444 105the extended part reads as null bytes (\(aq\\0\(aq).
fea681da 106.LP
1e568304 107The file offset is not changed.
fea681da 108.LP
c13182ef 109If the size changed, then the st_ctime and st_mtime fields
310b7919
MK
110(respectively, time of last status change and
111time of last modification; see
112.BR stat (2))
c13182ef 113for the file are updated,
310b7919 114and the set-user-ID and set-group-ID permission bits may be cleared.
fea681da
MK
115.LP
116With
310b7919 117.BR ftruncate (),
fea681da 118the file must be open for writing; with
310b7919 119.BR truncate (),
fea681da
MK
120the file must be writable.
121.SH "RETURN VALUE"
c13182ef
MK
122On success, zero is returned.
123On error, \-1 is returned, and
fea681da
MK
124.I errno
125is set appropriately.
126.SH ERRORS
127For
e511ffb6 128.BR truncate ():
fea681da
MK
129.TP
130.B EACCES
131Search permission is denied for a component of the path prefix,
132or the named file is not writable by the user.
133(See also
ad7cc990 134.BR path_resolution (7).)
fea681da
MK
135.TP
136.B EFAULT
137.I Path
138points outside the process's allocated address space.
139.TP
140.B EFBIG
141The argument
142.I length
143is larger than the maximum file size. (XSI)
144.TP
145.B EINTR
146A signal was caught during execution.
147.TP
148.B EINVAL
149The argument
150.I length
151is negative or larger than the maximum file size.
152.TP
153.B EIO
154An I/O error occurred updating the inode.
155.TP
3ade1aa9
MK
156.B EINTR
157While blocked waiting to complete,
158the call was interrupted by a signal handler; see
159.BR fcntl (2)
160and
161.BR signal (7).
162.TP
fea681da
MK
163.B EISDIR
164The named file is a directory.
165.TP
166.B ELOOP
167Too many symbolic links were encountered in translating the pathname.
168.TP
169.B ENAMETOOLONG
170A component of a pathname exceeded 255 characters,
2d7195b8 171or an entire pathname exceeded 1023 characters.
fea681da
MK
172.TP
173.B ENOENT
174The named file does not exist.
175.TP
176.B ENOTDIR
177A component of the path prefix is not a directory.
178.TP
5b548b31 179.B EPERM
7a5097a1 180.\" This happens for at least MSDOS and VFAT file systems
5b548b31
MK
181.\" on kernel 2.6.13
182The underlying file system does not support extending
183a file beyond its current size.
184.TP
fea681da
MK
185.B EROFS
186The named file resides on a read-only file system.
187.TP
188.B ETXTBSY
189The file is a pure procedure (shared text) file that is being executed.
190.PP
191For
310b7919 192.BR ftruncate ()
fea681da
MK
193the same errors apply, but instead of things that can be wrong with
194.IR path ,
3ade1aa9 195we now have things that can be wrong with the file descriptor,
fea681da
MK
196.IR fd :
197.TP
198.B EBADF
fea681da
MK
199.I fd
200is not a valid descriptor.
201.TP
202.BR EBADF " or " EINVAL
fea681da
MK
203.I fd
204is not open for writing.
205.TP
206.B EINVAL
fea681da
MK
207.I fd
208does not reference a regular file.
209.SH "CONFORMING TO"
97c1eac8
MK
2104.4BSD, SVr4, POSIX.1-2001 (these calls first appeared in 4.2BSD).
211.\" POSIX.1-1996 has
212.\" .BR ftruncate ().
213.\" POSIX.1-2001 also has
214.\" .BR truncate (),
215.\" as an XSI extension.
216.\" .LP
217.\" SVr4 documents additional
218.\" .BR truncate ()
219.\" error conditions EMFILE, EMULTIHP, ENFILE, ENOLINK. SVr4 documents for
220.\" .BR ftruncate ()
221.\" an additional EAGAIN error condition.
fea681da
MK
222.SH NOTES
223The above description is for XSI-compliant systems.
224For non-XSI-compliant systems, the POSIX standard allows
d9bfdb9c 225two behaviors for
310b7919 226.BR ftruncate ()
fea681da
MK
227when
228.I length
229exceeds the file length
230(note that
310b7919 231.BR truncate ()
fea681da
MK
232is not specified at all in such an environment):
233either returning an error, or extending the file.
c13182ef
MK
234Like most Unix implementations, Linux follows the XSI requirement
235when dealing with native file systems.
24b74457 236However, some nonnative file systems do not permit
5b548b31 237.BR truncate ()
c13182ef 238and
5b548b31
MK
239.BR ftruncate ()
240to be used to extend a file beyond its current length:
241a notable example on Linux is VFAT.
fea681da
MK
242.\" At the very least: OSF/1, Solaris 7, and FreeBSD conform, mtk, Jan 2002
243.SH "SEE ALSO"
244.BR open (2),
ad7cc990
MK
245.BR stat (2),
246.BR path_resolution (7)