Provided by: manpages-de-dev_2.5-1_all bug

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():
           _XOPEN_SOURCE >= 500
               || /* Seit Glibc 2.12: */ _POSIX_C_SOURCE >= 200809L
               || /* Glibc-Versionen <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE

       mkostemp(): _GNU_SOURCE
       mkstemps():
           /* Glibc seit 2.19: */ _DEFAULT_SOURCE
               || /* Glibc-Versionen <= 2.19: */ _SVID_SOURCE || _BSD_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.

ATTRIBUTE

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

       ┌────────────────────────┬───────────────────────┬─────────┐
       │SchnittstelleAttributWert    │
       ├────────────────────────┼───────────────────────┼─────────┤
       │mkstemp(), mkostemp(),  │ Multithread-Fähigkeit │ MT-Safe │
       │mkstemps(), mkostemps() │                       │         │
       └────────────────────────┴───────────────────────┴─────────┘

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.

SIEHE AUCH

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

KOLOPHON

       Diese Seite  ist  Teil  der  Veröffentlichung  4.15  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 https://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

       Die  deutsche  Übersetzung  dieser   Handbuchseite   wurde   von   Andreas   D.   Preissig
       <andreas@sanix.ruhr.de>,    Chris    Leick    <c.leick@vollbio.de>,    Mario   Blättermann
       <mario.blaettermann@gmail.com> und Dr. Tobias Quathamer <toddy@debian.org> 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>.