tmpnam(3S) tmpnam(3S)
NAME
tmpnam, tempnam - Name für temporäre Datei erstellen
SYNTAX
#include <stdio.h>
char *tmpnam (char *s);
char *tempnam (const char *dir, const char *pfx);
BESCHREIBUNG
Mit diesen Funktionen werden Dateinamen erstellt, die für eine tempo-
räre Datei gültig sind.
tmpnam() generiert immer einen Dateinamen unter Verwendung des Pfad-
Präfixes, der als Ptmpdir in der Include-Datei stdio.h definiert ist.
Wenn s NULL ist, schreibt tmpnam() das Resultat in einen internen sta-
tischen Bereich und gibt einen Zeiger auf diesen Bereich zurück. Mit
dem nächsten Aufruf von tmpnam() wird der Inhalt dieses Bereichs zer-
stört. Wenn s nicht NULL ist, wird davon ausgegangen, daß es die
Adresse eines Feldes von wenigstens Ltmpnam Bytes ist, wobei Ltmpnam
eine in stdio.h definierte Konstante ist; tmpnam() setzt das Ergebnis
in dieses Feld und gibt s zurück.
tempnam() ermöglicht die Steuerung der Dateiverzeichniswahl. Das Argu-
ment dir zeigt auf den Namen des Dateiverzeichnisses, in dem die Datei
erstellt werden soll. Wenn dir NULL ist oder auf eine Zeichenkette
weist, die nicht der Name für ein entsprechendes Dateiverzeichnis ist,
wird das als Ptmpdir in der Include-Datei stdio.h definierte Pfad-
Präfix verwendet. Kann auf dieses Dateiverzeichnis nicht mit access(2)
zugegriffen werden, wird /tmp als letzte Möglichkeit verwendet. Dieser
gesamte Ablauf kann durch Bereitstellen einer Umgebungsvariablen
TMPDIR verbessert werden. Der Wert von TMPDIR ist der Name des
gewünschten Dateiverzeichnisses der temporären Datei.
Bei vielen Anwendungen ist es vorteilhaft, wenn die temporären Dateien
bestimmte bevorzugte Anfangsbuchstaben in ihren Namen aufweisen. Hier-
für verwendet man das Argument pfx. Dieses Argument kann NULL sein
oder auf eine Zeichenkette von maximal fünf Bytes zeigen, die als die
ersten Bytes des Namens der temporären Datei eingesetzt werden.
tempnam() verwendet malloc(), um Speicherplatz für den erzeugten
Dateinamen zu erhalten und gibt einen Zeiger auf diesen Bereich
zurück. Daher kann jeder von tempnam() zurückgegebene Zeigerwert als
Argument für free() dienen [siehe malloc(3C)]. Wenn tempnam() aus
irgendeinem Grunde das erwartete Ergebnis nicht liefern kann, d. h.
wenn malloc() erfolglos war oder kein geeignetes Dateiverzeichnis
gefunden wurde, wird ein Nullzeiger zurückgegeben.
tempnam() ist erfolglos, wenn nicht genug Speicher vorhanden ist.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
tmpnam(3S) tmpnam(3S)
HINWEISE
Diese Funktionen generieren bei jedem Aufruf einen anderen Dateinamen.
Dateien, die unter Verwendung dieser Funktionen und entweder von
fopen() oder creat() erstellt wurden, sind nur insofern temporär, als
sie sich in einem Dateiverzeichnis befinden, das für temporären
Gebrauch bestimmt ist, und ihre Namen eindeutig sind. Es liegt in der
Verantwortung des Benutzers, die Datei zu löschen, wenn diese nicht
mehr gebraucht wird. Wenn diese Funktionen mehr als TMPMAX (definiert
in stdio.h) mal in einem einzigen Prozeß aufgerufen werden, werden
vorher benutzte Namen wieder verwendet.
Es ist möglich, daß während des Zeitraums von der Erstellung eines
Dateinamens bis zum Öffnen der Datei ein anderer Prozeß eine Datei mit
dem gleichen Namen erstellt. Dies kann jedoch nicht eintreten, wenn
der andere Prozeß diese Funktionen oder mktemp() verwendet und die
Dateinamen so gewählt werden, daß ihre Duplizierung auf andere Weise
unwahrscheinlich ist.
SIEHE AUCH
access(2), creat(2), unlink(2), malloc(3C), mktemp(3C), fopen(3S),
tmpfile(3S).
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98