• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/toolchains/hndtools-armeabi-2013.11/share/doc/arm-arm-none-eabi/html/libc/
1<html lang="en">
2<head>
3<title>mktemp - Untitled</title>
4<meta http-equiv="Content-Type" content="text/html">
5<meta name="description" content="Untitled">
6<meta name="generator" content="makeinfo 4.13">
7<link title="Top" rel="start" href="index.html#Top">
8<link rel="up" href="Stdio.html#Stdio" title="Stdio">
9<link rel="prev" href="getwchar.html#getwchar" title="getwchar">
10<link rel="next" href="open_005fmemstream.html#open_005fmemstream" title="open_memstream">
11<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
12<meta http-equiv="Content-Style-Type" content="text/css">
13<style type="text/css"><!--
14  pre.display { font-family:inherit }
15  pre.format  { font-family:inherit }
16  pre.smalldisplay { font-family:inherit; font-size:smaller }
17  pre.smallformat  { font-family:inherit; font-size:smaller }
18  pre.smallexample { font-size:smaller }
19  pre.smalllisp    { font-size:smaller }
20  span.sc    { font-variant:small-caps }
21  span.roman { font-family:serif; font-weight:normal; } 
22  span.sansserif { font-family:sans-serif; font-weight:normal; } 
23--></style>
24<link rel="stylesheet" type="text/css" href="../cs.css">
25</head>
26<body>
27<div class="node">
28<a name="mktemp"></a>
29<p>
30Next:&nbsp;<a rel="next" accesskey="n" href="open_005fmemstream.html#open_005fmemstream">open_memstream</a>,
31Previous:&nbsp;<a rel="previous" accesskey="p" href="getwchar.html#getwchar">getwchar</a>,
32Up:&nbsp;<a rel="up" accesskey="u" href="Stdio.html#Stdio">Stdio</a>
33<hr>
34</div>
35
36<h3 class="section">4.41 <code>mktemp</code>, <code>mkstemp</code>, <code>mkostemp</code>, <code>mkstemps</code>,</h3>
37
38<p><a name="index-mktemp-230"></a><a name="index-mkdtemp-231"></a><a name="index-mkstemp-232"></a><a name="index-mkstemps-233"></a><a name="index-mkostemp-234"></a><a name="index-mkostemps-235"></a><a name="index-g_t_005fmktemp_005fr-236"></a><a name="index-g_t_005fmkdtemp_005fr-237"></a><a name="index-g_t_005fmkstemp_005fr-238"></a><a name="index-g_t_005fmkstemps_005fr-239"></a><a name="index-g_t_005fmkostemp_005fr-240"></a><a name="index-g_t_005fmkostemps_005fr-241"></a><strong>Synopsis</strong>
39<pre class="example">     #include &lt;stdlib.h&gt;
40     char *mktemp(char *<var>path</var>);
41     char *mkdtemp(char *<var>path</var>);
42     int mkstemp(char *<var>path</var>);
43     int mkstemps(char *<var>path</var>, int <var>suffixlen</var>);
44     int mkostemp(char *<var>path</var>, int <var>flags</var>);
45     int mkostemps(char *<var>path</var>, int <var>suffixlen</var>, int <var>flags</var>);
46     
47     char *_mktemp_r(struct _reent *<var>reent</var>, char *<var>path</var>);
48     char *_mkdtemp_r(struct _reent *<var>reent</var>, char *<var>path</var>);
49     int *_mkstemp_r(struct _reent *<var>reent</var>, char *<var>path</var>);
50     int *_mkstemps_r(struct _reent *<var>reent</var>, char *<var>path</var>, int <var>len</var>);
51     int *_mkostemp_r(struct _reent *<var>reent</var>, char *<var>path</var>,
52         int <var>flags</var>);
53     int *_mkostemps_r(struct _reent *<var>reent</var>, char *<var>path</var>, int <var>len</var>,
54         int <var>flags</var>);
55     
56</pre>
57   <p><strong>Description</strong><br>
58<code>mktemp</code>, <code>mkstemp</code>, and <code>mkstemps</code> attempt to generate a file name
59that is not yet in use for any existing file.  <code>mkstemp</code> and <code>mkstemps</code>
60create the file and open it for reading and writing; <code>mktemp</code> simply
61generates the file name (making <code>mktemp</code> a security risk).  <code>mkostemp</code>
62and <code>mkostemps</code> allow the addition of other <code>open</code> flags, such
63as <code>O_CLOEXEC</code>, <code>O_APPEND</code>, or <code>O_SYNC</code>.  On platforms with a
64separate text mode, <code>mkstemp</code> forces <code>O_BINARY</code>, while <code>mkostemp</code>
65allows the choice between <code>O_BINARY</code>, <code>O_TEXT</code>, or 0 for default. 
66<code>mkdtemp</code> attempts to create a directory instead of a file, with a
67permissions mask of 0700.
68
69   <p>You supply a simple pattern for the generated file name, as the string
70at <var>path</var>.  The pattern should be a valid filename (including path
71information if you wish) ending with at least six `<code>X</code>'
72characters.  The generated filename will match the leading part of the
73name you supply, with the trailing `<code>X</code>' characters replaced by some
74combination of digits and letters.  With <code>mkstemps</code>, the `<code>X</code>'
75characters end <var>suffixlen</var> bytes before the end of the string.
76
77   <p>The alternate functions <code>_mktemp_r</code>, <code>_mkdtemp_r</code>, <code>_mkstemp_r</code>,
78<code>_mkostemp_r</code>, <code>_mkostemps_r</code>, and <code>_mkstemps_r</code> are reentrant
79versions.  The extra argument <var>reent</var> is a pointer to a reentrancy
80structure.
81
82   <p><br>
83<strong>Returns</strong><br>
84<code>mktemp</code> returns the pointer <var>path</var> to the modified string
85representing an unused filename, unless it could not generate one, or
86the pattern you provided is not suitable for a filename; in that case,
87it returns <code>NULL</code>.  Be aware that there is an inherent race between
88generating the name and attempting to create a file by that name;
89you are advised to use <code>O_EXCL|O_CREAT</code>.
90
91   <p><code>mkdtemp</code> returns the pointer <var>path</var> to the modified string if the
92directory was created, otherwise it returns <code>NULL</code>.
93
94   <p><code>mkstemp</code>, <code>mkstemps</code>, <code>mkostemp</code>, and <code>mkostemps</code> return a file
95descriptor to the newly created file, unless it could not generate an
96unused filename, or the pattern you provided is not suitable for a
97filename; in that case, it returns <code>-1</code>.
98
99   <p><br>
100<strong>Portability</strong><br>
101ANSI C does not require either <code>mktemp</code> or <code>mkstemp</code>; the System
102V Interface Definition requires <code>mktemp</code> as of Issue 2.  POSIX 2001
103requires <code>mkstemp</code>, and POSIX 2008 requires <code>mkdtemp</code> while
104deprecating <code>mktemp</code>.  <code>mkstemps</code>, <code>mkostemp</code>, and <code>mkostemps</code>
105are not standardized.
106
107   <p>Supporting OS subroutines required: <code>getpid</code>, <code>mkdir</code>, <code>open</code>, <code>stat</code>.
108
109   <p><br>
110
111   </body></html>
112
113