BEZEICHNUNG¶
tmpnam, tmpnam_r - einen Namen für eine temporäre Datei erzeugen
ÜBERSICHT¶
#include <stdio.h>
char *tmpnam(char *s);
BESCHREIBUNG¶
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.
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 3.42 des Projekts Linux-
man-pages. Eine Beschreibung des Projekts und Informationen, wie Fehler
gemeldet werden können, 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>.