MKSTEMP(3)

BEZEICHNUNG
mkstemp, mkostemp, mkstemps, mkostemps - eine einzigartige temporäre Datei erstellen

ÜBERSICHT
#include <stdlib.h>

int mkstemp(char *schablone);

int mkostemp(char *schablone, int schalter);

int mkstemps(char *schablone, int endungslaenge);

int mkostemps(char *schablone, int endungslaenge, int schalter);

Mit Glibc erforderliche Makros (siehe feature_test_macros(7)):

mkstemp():
    _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
    || /* Seit Glibc 2.12: */ _POSIX_C_SOURCE >= 200112L

mkostemp(): _GNU_SOURCE
mkstemps(): _BSD_SOURCE || _SVID_SOURCE
mkostemps(): _GNU_SOURCE

BESCHREIBUNG
Die Funktion mkstemp() erstellt einen eindeutigen temporären Dateinamen aus schablone, erstellt und öffnet die Datei und gibt einen Deskriptor für für die offene Datei zurück. Die letzten sechs Zeichen von schablone müssen »XXXXXX« sein. Diese werden durch eine Zeichenkette ersetzt, die den Dateinamen eindeutig macht. Da sie verändert wird, darf schablone keine Zeichenkettenkonstante sein, sondern als Zeichenfeld deklariert werden. Diese Datei wird mit den Rechten 0600 erstellt, das heißt, nur der Besitzer darf sie lesen und schreiben. Der zurückgegebene Dateideskriptor ist zum Lesen und Schreiben geöffnet. Die Datei wird mit open(2) und dem Schalter O_EXCL geöffnet, was gewährleistet, dass die Datei vom aufrufenden Prozess erzeugt wurde. Die Funktion mkostemp() ist mkstemp() ähnlich, mit dem Unterschied, dass die folgenden Bits – mit der selben Bedeutung wie für open(2) – in schalter angegeben werden können: O_APPEND, O_CLOEXEC und O_SYNC. Beachten Sie, dass mkostemp() beim Erstellen der Datei bereits die Werte O_RDWR, O_CREAT und O_EXCL im Argument schalter beinhaltet, das an open(2) übergeben wird. Es ist nicht nötig, diese Werte in das Argument schalter einzubeziehen und ruft auf einigen System Fehler hervor. Die Funktion mkstemps() unterscheidet sich von mkstemp() nur dadurch, dass die Zeichenkette in schablone eine Endung von endungslaenge Zeichen enthält. Daher hat schablone die Form praefixXXXXXXendung und die Zeichenkette XXXXXX wird wie für mkstemp() verändert. Die Funktion mkostemp() verhält sich zu mkstemps() wie mkostemp() zu mkstemp().

RÜCKGABEWERT
Bei Erfolg geben diese Funktionen den Dateideskriptor der temporären Datei zurück. Im Fehlerfall wird -1 zurückgegeben und errno entsprechend gesetzt.

FEHLER

EEXIST
    Es konnte kein eindeutiger temporärer Dateiname erstellt werden. Der Inhalt von schablone ist nun undefiniert.

EINVAL
    Für mkstemp() und mkostemp(): Die letzten sechs Buchstaben von schablone waren nicht XXXXXX;schablone ist unverändert.

    Für mkstemps() und mkostemps(): schablone ist weniger als (6 + endungslaenge) Zeichen lang oder die letzten 6 Zeichen vor der Endung in schablone waren nicht XXXXXX.

Diese Funktionen könnten auch mit einem der für open(2) beschriebenen Fehler fehlschlagen.

VERSIONEN
mkostemp() ist seit Glibc 2.7 verfügbar. mkstemps() und mkostemps() sind seit Glibc 2.11 verfügbar.

ATTRIBUTES

  Multithreading (see pthreads(7))
The mkstemp(), mkostemp(), mkstemps(), and mkostemps() functions are thread-safe.

KONFORM ZU
mkstemp(): 4.3BSD, POSIX.1-2001. mkstemps(): nicht standardisiert, erscheint aber auf mehreren anderen Systemen mkostemp() und mkostemps() sind Glibc-Erweiterungen.

ANMERKUNGEN
In den Glibc-Versionen bis einschließlich 2.06 wurde die Datei mit den Rechten 0666 erstellt, das heißt, alle Benutzer dürfen sie lesen und schreiben. Dieses frühere Verhalten könnte ein Sicherheitsrisiko darstellen, besonders seit andere UNIX-Varianten 0600 benutzen und jemand diese Einzelheit bei der Portierung von Programmen übersehen könnte. POSIX.1-2008 fügt eine Anforderung hinzu, dass die Datei mit dem Modus 0600 erstellt wird. Allgemeiner ausgedrückt, sagt die POSIX-Spezifikation von mkstemp() nichts über die Dateimodi, daher sollte die Anwendung sicherstellen, dass ihre Dateimodus-Erstellungsmaske (siehe umask(2)) vor dem Aufruf von mkstemp() (und mkostemp()) entsprechend gesetzt ist. Der Prototyp von mktemp() befindet sich für Libc4, Libc5 und Glibc1 in <unistd.h>. Glibc2 berücksichtigt POSIX.1 und hat den Prototyp in <stdlib.h>.

SIEHE AUCH
mkdtemp(3), mktemp(3), tempnam(3), tmpfile(3), tmpnam(3)

KOLOPHON
This page is part of release 3.70 of the Linux man-pages project. A description of the project, information about reporting bugs, and the latest version of this page, can be found at http://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Andreas D. Preissig <andreas@sanix.ruhr.de> 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>.