mktemp - erzeugt einen eindeutigen temporären Dateinamen
Standard-C-Bibliothek (
libc,
-lc)
#include <stdlib.h>
char *mktemp(char *Vorlage);
mktemp():
Seit Glibc 2.12:
(_XOPEN_SOURCE >= 500) && ! (_POSIX_C_SOURCE >= 200112L)
|| /* Glibc >= 2.19: */ _DEFAULT_SOURCE
|| /* Glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
Vor Glibc 2.12:
_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500
Verwenden Sie diese Funktion niemals; lesen Sie FEHLER.
Die Funktion
mktemp() erzeugt einen eindeutigen temporären
Dateinamen. Dieser Name wird aus
Vorlage erzeugt, dessen letzte sechs
Buchstaben XXXXXX sein müssen. Sie werden durch eine Zeichenfolge
ersetzt, die diesen Dateinamen eindeutig macht. Weil
Vorlage
verändert wird, darf es keine keine konstante Zeichenkette (string
constant) sein, sondern sollte als Zeichenfeld (character array) deklariert
sein.
Die Funktion
mktemp() gibt immer
Vorlage zurück. Bei
erfolgreicher Ausführung wurden die letzten sechs Byte von
Vorlage so verändert, dass daraus ein eindeutiger (also nicht
schon vorhandener) Name wurde. Hatte der Aufruf keinen Erfolg, wird
Vorlage in eine leere Zeichenkette umgewandelt und
errno
gesetzt, um den Fehler anzuzeigen.
- EINVAL
- Die letzten sechs Buchstaben von Vorlage waren nicht
XXXXXX.
Siehe
attributes(7) für eine Erläuterung der in diesem
Abschnitt verwandten Ausdrücke.
Schnittstelle |
Attribut |
Wert |
mktemp() |
Multithread-Fähigkeit |
MT-Safe |
4.3BSD, POSIX.1-2001. POSIX.1-2008 entfernt die Spezifikation von
mktemp().
Verwenden Sie
mktemp() niemals. Einige Implementierungen folgen 4.3BSD
und ersetzen XXXXXX durch die aktuelle Prozesskennung und einen einzelnen
Buchstaben, so dass maximal 26 unterschiedliche Namen zurückgegeben
werden können. Da einerseits die Namen einfach zu erraten sind und es
andererseits einen Wettlauf zwischen der Prüfung, ob der Name
existiert, und dem Öffnen der Datei gibt, ist jeder Einsatz von
mktemp() ein Sicherheitsrisiko. Der Wettlauf wird von
mkstemp(3)
und
mkdtemp(3) vermieden.
mktemp(1),
mkdtemp(3),
mkstemp(3),
tempnam(3),
tmpfile(3),
tmpnam(3)
Die deutsche Übersetzung dieser Handbuchseite wurde von Andreas D.
Preissig <
[email protected]> und Martin Eberhard Schauer
<
[email protected]> 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 die
Mailingliste
der Übersetzer