mkstemp(3) Library Functions Manual mkstemp(3) BEZEICHNUNG mkstemp, mkostemp, mkstemps, mkostemps - eine einzigartige temporare Datei erstellen BIBLIOTHEK Standard-C-Bibliothek (libc, -lc) UBERSICHT #include 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 Feature-Test-Makros (siehe feature_test_macros(7)): mkstemp(): _XOPEN_SOURCE >= 500 || /* Glibc >= 2.12: */ _POSIX_C_SOURCE >= 200809L || /* Glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE mkostemp(): _GNU_SOURCE mkstemps(): /* Glibc >= 2.19: */ _DEFAULT_SOURCE || /* Glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE mkostemps(): _GNU_SOURCE BESCHREIBUNG Die Funktion mkstemp() erstellt einen eindeutigen temporaren Dateinamen aus schablone, erstellt und offnet die Datei und gibt einen Deskriptor fur fur die offene Datei zuruck. Die letzten sechs Zeichen von schablone mussen >>XXXXXX<< sein. Diese werden durch eine Zeichenkette ersetzt, die den Dateinamen eindeutig macht. Da sie verandert wird, darf schablone keine Zeichenkettenkonstante sein, sondern als Zeichenfeld deklariert werden. Diese Datei wird mit den Rechten 0600 erstellt, das heisst, nur der Besitzer darf sie lesen und schreiben. Der zuruckgegebene Dateideskriptor ist zum Lesen und Schreiben geoffnet. Die Datei wird mit open(2) und dem Schalter O_EXCL geoffnet, was gewahrleistet, dass die Datei vom aufrufenden Prozess erzeugt wurde. Die Funktion mkostemp() ist mkstemp() ahnlich, mit dem Unterschied, dass die folgenden Bits - mit der selben Bedeutung wie fur open(2) - in schalter angegeben werden konnen: 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) ubergeben wird. Es ist nicht notig, 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 enthalt. Daher hat schablone die Form praefixXXXXXXendung und die Zeichenkette XXXXXX wird wie fur mkstemp() verandert. Die Funktion mkostemp() verhalt sich zu mkstemps() wie mkostemp() zu mkstemp(). RUCKGABEWERT Bei Erfolg geben diese Funktionen den Dateideskriptor der temporaren Datei zuruck. Im Fehlerfall wird -1 zuruckgegeben und errno gesetzt, um den Fehler anzuzeigen. FEHLER EEXIST Es konnte kein eindeutiger temporarer Dateiname erstellt werden. Der Inhalt von schablone ist nun undefiniert. EINVAL Fur mkstemp() und mkostemp(): Die letzten sechs Buchstaben von schablone waren nicht XXXXXX;schablone ist unverandert. Fur 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 konnten auch mit einem der fur open(2) beschriebenen Fehler fehlschlagen. ATTRIBUTE Siehe attributes(7) fur eine Erlauterung der in diesem Abschnitt verwandten Ausdrucke. +--------------------------------+-------------------------+-----------+ |Schnittstelle | Attribut | Wert | +--------------------------------+-------------------------+-----------+ |mkstemp(), mkostemp(), | Multithread-Fahigkeit | MT-Sicher | |mkstemps(), mkostemps() | | | +--------------------------------+-------------------------+-----------+ STANDARDS mkstemp() POSIX.1-2001. mkstemps() BSD. mkostemp() mkostemps() GNU. GESCHICHTE mkstemp() 4.3BSD, POSIX.1-2001. mkstemps() Glibc 2.11. BSD, Mac OS X, Solaris, Tru64. mkostemp() Glibc 2.7. mkostemps() Glibc 2.11. In den Glibc-Versionen bis einschliesslich 2.06 wurde die Datei mit den Rechten 0666 erstellt, das heisst, alle Benutzer durfen sie lesen und schreiben. Dieses fruhere Verhalten konnte ein Sicherheitsrisiko darstellen, besonders seit andere UNIX-Varianten 0600 benutzen und jemand diese Einzelheit bei der Portierung von Programmen ubersehen konnte. POSIX.1-2008 fugt eine Anforderung hinzu, dass die Datei mit dem Modus 0600 erstellt wird. Allgemeiner ausgedruckt, sagt die POSIX-Spezifikation von mkstemp() nichts uber 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) UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Andreas D. Preissig , Chris Leick , Mario Blattermann und Dr. Tobias Quathamer erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer . Linux man-pages 6.06 31. Oktober 2023 mkstemp(3)