| <html lang="en"> |
| <head> |
| <title>mktemp - Untitled</title> |
| <meta http-equiv="Content-Type" content="text/html"> |
| <meta name="description" content="Untitled"> |
| <meta name="generator" content="makeinfo 4.13"> |
| <link title="Top" rel="start" href="index.html#Top"> |
| <link rel="up" href="Stdio.html#Stdio" title="Stdio"> |
| <link rel="prev" href="getwchar.html#getwchar" title="getwchar"> |
| <link rel="next" href="open_005fmemstream.html#open_005fmemstream" title="open_memstream"> |
| <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage"> |
| <meta http-equiv="Content-Style-Type" content="text/css"> |
| <style type="text/css"><!-- |
| pre.display { font-family:inherit } |
| pre.format { font-family:inherit } |
| pre.smalldisplay { font-family:inherit; font-size:smaller } |
| pre.smallformat { font-family:inherit; font-size:smaller } |
| pre.smallexample { font-size:smaller } |
| pre.smalllisp { font-size:smaller } |
| span.sc { font-variant:small-caps } |
| span.roman { font-family:serif; font-weight:normal; } |
| span.sansserif { font-family:sans-serif; font-weight:normal; } |
| --></style> |
| </head> |
| <body> |
| <div class="node"> |
| <a name="mktemp"></a> |
| <p> |
| Next: <a rel="next" accesskey="n" href="open_005fmemstream.html#open_005fmemstream">open_memstream</a>, |
| Previous: <a rel="previous" accesskey="p" href="getwchar.html#getwchar">getwchar</a>, |
| Up: <a rel="up" accesskey="u" href="Stdio.html#Stdio">Stdio</a> |
| <hr> |
| </div> |
| |
| <h3 class="section">4.41 <code>mktemp</code>, <code>mkstemp</code>, <code>mkostemp</code>, <code>mkstemps</code>,</h3> |
| |
| <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> |
| <pre class="example"> #include <stdlib.h> |
| char *mktemp(char *<var>path</var>); |
| char *mkdtemp(char *<var>path</var>); |
| int mkstemp(char *<var>path</var>); |
| int mkstemps(char *<var>path</var>, int <var>suffixlen</var>); |
| int mkostemp(char *<var>path</var>, int <var>flags</var>); |
| int mkostemps(char *<var>path</var>, int <var>suffixlen</var>, int <var>flags</var>); |
| |
| char *_mktemp_r(struct _reent *<var>reent</var>, char *<var>path</var>); |
| char *_mkdtemp_r(struct _reent *<var>reent</var>, char *<var>path</var>); |
| int *_mkstemp_r(struct _reent *<var>reent</var>, char *<var>path</var>); |
| int *_mkstemps_r(struct _reent *<var>reent</var>, char *<var>path</var>, int <var>len</var>); |
| int *_mkostemp_r(struct _reent *<var>reent</var>, char *<var>path</var>, |
| int <var>flags</var>); |
| int *_mkostemps_r(struct _reent *<var>reent</var>, char *<var>path</var>, int <var>len</var>, |
| int <var>flags</var>); |
| |
| </pre> |
| <p><strong>Description</strong><br> |
| <code>mktemp</code>, <code>mkstemp</code>, and <code>mkstemps</code> attempt to generate a file name |
| that is not yet in use for any existing file. <code>mkstemp</code> and <code>mkstemps</code> |
| create the file and open it for reading and writing; <code>mktemp</code> simply |
| generates the file name (making <code>mktemp</code> a security risk). <code>mkostemp</code> |
| and <code>mkostemps</code> allow the addition of other <code>open</code> flags, such |
| as <code>O_CLOEXEC</code>, <code>O_APPEND</code>, or <code>O_SYNC</code>. On platforms with a |
| separate text mode, <code>mkstemp</code> forces <code>O_BINARY</code>, while <code>mkostemp</code> |
| allows the choice between <code>O_BINARY</code>, <code>O_TEXT</code>, or 0 for default. |
| <code>mkdtemp</code> attempts to create a directory instead of a file, with a |
| permissions mask of 0700. |
| |
| <p>You supply a simple pattern for the generated file name, as the string |
| at <var>path</var>. The pattern should be a valid filename (including path |
| information if you wish) ending with at least six `<code>X</code>' |
| characters. The generated filename will match the leading part of the |
| name you supply, with the trailing `<code>X</code>' characters replaced by some |
| combination of digits and letters. With <code>mkstemps</code>, the `<code>X</code>' |
| characters end <var>suffixlen</var> bytes before the end of the string. |
| |
| <p>The alternate functions <code>_mktemp_r</code>, <code>_mkdtemp_r</code>, <code>_mkstemp_r</code>, |
| <code>_mkostemp_r</code>, <code>_mkostemps_r</code>, and <code>_mkstemps_r</code> are reentrant |
| versions. The extra argument <var>reent</var> is a pointer to a reentrancy |
| structure. |
| |
| <p><br> |
| <strong>Returns</strong><br> |
| <code>mktemp</code> returns the pointer <var>path</var> to the modified string |
| representing an unused filename, unless it could not generate one, or |
| the pattern you provided is not suitable for a filename; in that case, |
| it returns <code>NULL</code>. Be aware that there is an inherent race between |
| generating the name and attempting to create a file by that name; |
| you are advised to use <code>O_EXCL|O_CREAT</code>. |
| |
| <p><code>mkdtemp</code> returns the pointer <var>path</var> to the modified string if the |
| directory was created, otherwise it returns <code>NULL</code>. |
| |
| <p><code>mkstemp</code>, <code>mkstemps</code>, <code>mkostemp</code>, and <code>mkostemps</code> return a file |
| descriptor to the newly created file, unless it could not generate an |
| unused filename, or the pattern you provided is not suitable for a |
| filename; in that case, it returns <code>-1</code>. |
| |
| <p><br> |
| <strong>Portability</strong><br> |
| ANSI C does not require either <code>mktemp</code> or <code>mkstemp</code>; the System |
| V Interface Definition requires <code>mktemp</code> as of Issue 2. POSIX 2001 |
| requires <code>mkstemp</code>, and POSIX 2008 requires <code>mkdtemp</code> while |
| deprecating <code>mktemp</code>. <code>mkstemps</code>, <code>mkostemp</code>, and <code>mkostemps</code> |
| are not standardized. |
| |
| <p>Supporting OS subroutines required: <code>getpid</code>, <code>mkdir</code>, <code>open</code>, <code>stat</code>. |
| |
| <p><br> |
| |
| </body></html> |
| |