OSDN Git Service

Update README
[linuxjm/LDP_man-pages.git] / original / man3 / mkstemp.3
index 4478853..33f4dca 100644 (file)
@@ -1,6 +1,7 @@
 .\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk)
 .\" and Copyright (C) 2008, Michael Kerrisk <mtk.manpages@gmail.com>
 .\"
+.\" %%%LICENSE_START(VERBATIM)
 .\" Permission is granted to make and distribute verbatim copies of this
 .\" manual provided the copyright notice and this permission notice are
 .\" preserved on all copies.
@@ -20,6 +21,7 @@
 .\"
 .\" Formatted or processed versions of this manual, if unaccompanied by
 .\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
 .\"
 .\" References consulted:
 .\"     Linux libc source code
 .\" Modified 990328, aeb
 .\" 2008-06-19, mtk, Added mkostemp(); various other changes
 .\"
-.TH MKSTEMP 3  2010-06-19 "GNU" "Linux Programmer's Manual"
+.TH MKSTEMP 3  2014-08-19 "GNU" "Linux Programmer's Manual"
 .SH NAME
-mkstemp, mkostemp \- create a unique temporary file
+mkstemp, mkostemp, mkstemps, mkostemps \- create a unique temporary file
 .SH SYNOPSIS
 .nf
 .B #include <stdlib.h>
 .sp
 .BI "int mkstemp(char *" template );
 .sp
-.BI "int mkostemp (char *" template ", int " flags );
+.BI "int mkostemp(char *" template ", int " flags );
 .sp
 .BI "int mkstemps(char *" template ", int " suffixlen );
 .sp
@@ -52,8 +54,17 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR mkstemp ():
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500
+.ad l
+.RS 4
+.PD 0
+_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
+_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
 .br
+|| /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200112L
+.PD
+.RE
+.ad b
+.PP
 .BR mkostemp ():
 _GNU_SOURCE
 .br
@@ -80,8 +91,6 @@ must not be a string constant, but should be declared as a character array.
 
 The file is created with
 permissions 0600, that is, read plus write for owner only.
-(In glibc versions 2.06 and earlier, the file is created with permissions 0666,
-that is, read and write for all users.)
 The returned file descriptor provides both read and write access to the file.
 The file is opened with the
 .BR open (2)
@@ -92,13 +101,32 @@ The
 .BR mkostemp ()
 function is like
 .BR mkstemp (),
-with the difference that flags as for
-.BR open (2)
-may be specified in
-.IR flags
-(e.g.,
+with the difference that the following bits\(emwith the same meaning as for
+.BR open (2)\(emmay
+be specified in
+.IR flags :
 .BR O_APPEND ,
-.BR O_SYNC ).
+.BR O_CLOEXEC ,
+and
+.BR O_SYNC .
+Note that when creating the file,
+.BR mkostemp ()
+includes the values
+.BR O_RDWR ,
+.BR O_CREAT ,
+and
+.BR O_EXCL
+in the
+.I flags
+argument given to
+.BR open (2);
+including these values in the
+.I flags
+argument given to
+.BR mkostemp ()
+is unnecessary, and produces errors on some
+.\" Reportedly, FreeBSD
+systems.
 
 The
 .BR mkstemps ()
@@ -124,7 +152,7 @@ as
 .BR mkostemp ()
 is to
 .BR mkstemp ().
-.SH "RETURN VALUE"
+.SH RETURN VALUE
 On success, these functions return the file descriptor
 of the temporary file.
 On error, \-1 is returned, and
@@ -147,7 +175,7 @@ now \fItemplate\fP is unchanged.
 For
 .BR mkstemps ()
 and
-.BR mkostemps ()
+.BR mkostemps ():
 .I template
 is less than
 .I "(6 + suffixlen)"
@@ -164,7 +192,16 @@ is available since glibc 2.7.
 and
 .BR mkostemps ()
 are available since glibc 2.11.
-.SH "CONFORMING TO"
+.SH ATTRIBUTES
+.SS Multithreading (see pthreads(7))
+The
+.BR mkstemp (),
+.BR mkostemp (),
+.BR mkstemps (),
+and
+.BR mkostemps ()
+functions are thread-safe.
+.SH CONFORMING TO
 .BR mkstemp ():
 4.3BSD, POSIX.1-2001.
 
@@ -178,9 +215,12 @@ and
 .BR mkostemps ():
 are glibc extensions.
 .SH NOTES
-The old behavior of creating a file with mode 0666 may be
-a security risk, especially since other Unix flavors use 0600,
+In glibc versions 2.06 and earlier, the file is created with permissions 0666,
+that is, read and write for all users.
+This old behavior may be
+a security risk, especially since other UNIX flavors use 0600,
 and somebody might overlook this detail when porting programs.
+POSIX.1-2008 adds a requirement that the file be created with mode 0600.
 
 More generally, the POSIX specification of
 .BR mkstemp ()
@@ -192,16 +232,25 @@ is set appropriately before calling
 .BR mkstemp ()
 (and
 .BR mkostemp ()).
-
-The prototype for
-.BR mktemp ()
-is in
-.I <unistd.h>
-for libc4, libc5, glibc1; glibc2 follows POSIX.1 and has the prototype in
-.IR <stdlib.h> .
-.SH "SEE ALSO"
+.\"
+.\" The prototype for
+.\" .BR mktemp ()
+.\" is in
+.\" .I <unistd.h>
+.\" for libc4, libc5, glibc1; glibc2 follows POSIX.1 and has the prototype in
+.\" .IR <stdlib.h> .
+.SH SEE ALSO
 .BR mkdtemp (3),
 .BR mktemp (3),
 .BR tempnam (3),
 .BR tmpfile (3),
 .BR tmpnam (3)
+.SH COLOPHON
+This page is part of release 3.79 of the Linux
+.I man-pages
+project.
+A description of the project,
+information about reporting bugs,
+and the latest version of this page,
+can be found at
+\%http://www.kernel.org/doc/man\-pages/.