Provided by: manpages-de-dev_1.11-1_all bug

BEZEICHNUNG

       tmpnam, tmpnam_r - einen Namen für eine temporäre Datei erzeugen

ÜBERSICHT

       #include <stdio.h>

       char *tmpnam(char *s);

BESCHREIBUNG

       Hinweis:  Vermeiden  Sie die Verwendung von tmpnam(); verwenden Sie stattdessen mkstemp(3)
       oder tmpfile(3).

       Die Funktion tmpnam() gibt einen Zeiger auf eine Zeichenkette  zurück,  die  ein  gültiger
       Dateiname  ist,  und  sorgt  dafür,  dass zu diesem Zeitpunkt keine Datei mit diesem Namen
       existiert, so dass ahnungslose Programmierer denken könnten, es sei  ein  geeigneter  Name
       für  eine  temporäre  Datei.  Falls  das  Argument  s  NULL ist, wird dieser Name in einem
       statischen Puffer generiert und könnte von nächsten tmpnam()-Aufruf überschrieben  werden.
       Falls s nicht NULL ist, wird der Name in das Zeichenfeld kopiert (das mindestens die Länge
       L_tmpnam hat), auf das s zeigt. Im Erfolgsfall wird s zurückgegeben.

       Der erzeugte Pfadname hat das Pfad-Präfix P_tmpdir. (Sowohl  L_tmpnam  als  auch  P_tmpdir
       sind in <stdio.h> definiert, genauso wie das im Folgenden erwähnte TMP_MAX.

RÜCKGABEWERT

       Die  Funktion  tmpnam() gibt einen Zeiger auf den eindeutigen temporären Dateinamen zurück
       oder NULL, wenn kein eindeutiger Name generiert werden konnte.

FEHLER

       Es sind keine Fehler definiert.

ATTRIBUTE

       Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke.

       ┌──────────────┬───────────────────────┬──────────────────────────┐
       │SchnittstelleAttributWert                     │
       ├──────────────┼───────────────────────┼──────────────────────────┤
       │tmpnam()      │ Multithread-Fähigkeit │ MT-Unsafe race:tmpnam/!s │
       ├──────────────┼───────────────────────┼──────────────────────────┤
       │tmpnam_r()    │ Multithread-Fähigkeit │ MT-Safe                  │
       └──────────────┴───────────────────────┴──────────────────────────┘

KONFORM ZU

       SVr4, 4.3BSD, C89, C99, POSIX.1-2001. POSIX.1-2008 kennzeichnet tmpnam() als veraltet.

ANMERKUNGEN

       Die  Funktion  tmpnam()  generiert  jedesmal,  wenn  sie  aufgerufen  wird,  eine   andere
       Zeichenkette.  Dies  geschieht  bis  zu  TMP_MAX  Mal.  Falls  sie  öfter  als TMP_MAX Mal
       aufgerufen wird, wird ihr Verhalten durch die Implementierung definiert.

       Obwohl tmpnam() Namen generiert, die schwer zu erahnen sind, ist es dennoch möglich,  dass
       in  der  Zeit  zwischen  der  Rückgabe des Pfadnamens und der Zeit, in der er vom Programm
       geöffnet wird, ein anderes Programm einen Pfadnamen  mit  open(2)  erzeugt  oder  ihn  als
       symbolischen Link erstellt. Dies kann zu Sicherheitslücken führen. Um solche Möglichkeiten
       zu vermeiden, benutzen Sie den Schalter O_EXCL von open(2), um diesen Pfadnamen zu  öffnen
       oder besser noch – benutzen Sie mkstemp(3) oder tmpfile(3).

       Portierbare  Anwendungen,  die  Threads benutzen, können tmpnam() nicht mit einem Argument
       aufrufen, das NULL ist, wenn  entweder  _POSIX_THREADS  oder  _POSIX_THREAD_SAFE_FUNCTIONS
       definiert sind.

       Ein  ursprünglicher POSIX-Entwurf schlug eine tmpnam_r()-Funktion vor, die definiert wurde
       wie folgt

           char *
           tmpnam_r(char *s)
           {
               return s ? tmpnam(s) : NULL;
           }

       scheinbar als Warnung nicht NULL zu benutzen. Einige Systeme implementierten das. Um einen
       Glibc-Prototypen  für diese Version von <stdio.h> zu bekommen, definieren Sie _SVID_SOURCE
       oder _BSD_SOURCE (vor dem Einbinden irgendeiner Header-Datei).

FEHLER

       Benutzen Sie diese Funktion niemals. Benutzen Sie stattdessen mkstemp(3) oder tmpfile(3).

SIEHE AUCH

       mkstemp(3), mktemp(3), tempnam(3), tmpfile(3)

KOLOPHON

       Diese Seite  ist  Teil  der  Veröffentlichung  4.04  des  Projekts  Linux-man-pages.  Eine
       Beschreibung  des  Projekts,  Informationen,  wie  Fehler gemeldet werden können sowie die
       aktuelle Version dieser Seite finden sich unter http://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

       Die deutsche Übersetzung dieser Handbuchseite wurde von Patrick Rother <krd@gulu.net>  und
       Chris Leick <c.leick@vollbio.de> erstellt.

       Diese  Übersetzung  ist  Freie  Dokumentation;  lesen  Sie  die GNU General Public License
       Version  3  oder  neuer  bezüglich  der  Copyright-Bedingungen.  Es  wird  KEINE   HAFTUNG
       übernommen.

       Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-
       Mail an <debian-l10n-german@lists.debian.org>.

                                           2. März 2015                                 TMPNAM(3)