Subroutine tmpnam oder tempnam

Zweck

Erstellt den Namen einer temporären Datei.

Bibliothek

Standard-C-Bibliothek (libc.a)

Syntax

#include <stdio.h>
char *tmpnam ( String)
char *String;
char *tempnam ( Directory,  FileXPointer)
const char *Directory, *FileXPointer;

Beschreibung

Achtung: Die Subroutinen Tmpnam und Tempnam generieren bei jedem Aufruf einen anderen Dateinamen. Wenn diese Subroutinen mehr als 16.384 Mal (TMP_MAX) von einem einzelnen Prozess aufgerufen werden, werden zuvor verwendete Namen erneut gestartet.

Die Subroutinen Tmpnam und Tempnam generieren Dateinamen für temporäre Dateien. Die Subroutine tmpnam generiert einen Dateinamen mit dem Pfadnamen, der als P_tmpdir in der Datei stdio.h definiert ist.

Dateien, die mit der Subroutine Tmpnam erstellt wurden, befinden sich in einem Verzeichnis, das für die temporäre Verwendung bestimmt ist. Die Dateinamen sind eindeutig. Die Anwendung muss die Datei erstellen und entfernen.

Mit der Subroutine Tempnam können Sie das Verzeichnis definieren. Der Parameter Verzeichnis verweist auf den Name des Verzeichnisses, in dem die Datei erstellt werden soll. Wenn der Parameter Verzeichnis ein Nullzeiger ist oder auf eine Zeichenfolge verweist, die kein Name für ein Verzeichnis ist, wird das Pfadpräfix verwendet, das als P_tmpdir in der Datei stdio.h definiert ist. Verwenden Sie für eine Anwendung, die temporäre Dateien mit Anfangsbuchstaben enthält, den Parameter FileXPointer , um die Sequenz zu definieren. Der Parameter FileXPointer (ein Nullzeiger oder eine Zeichenfolge mit bis zu 5 Byte) wird als Anfang des Dateinamens verwendet.

Zwischen dem Zeitpunkt, zu dem ein Dateiname erstellt und die Datei geöffnet wird, kann ein anderer Prozess eine Datei mit demselben Namen erstellen. Die Namensduplizierung ist unwahrscheinlich, wenn der andere Prozess diese Subroutinen oder die Subroutine Mktemp verwendet und die Dateinamen ausgewählt werden, um die Duplizierung auf andere Weise zu vermeiden.

Parameter

Element Beschreibung
string Gibt die Adresse eines Arrays von mindestens der Anzahl Byte an, die durch L_tmpnam, eine Konstante, die in der Datei stdio.h definiert ist, angegeben wird.

Wenn der Parameter Zeichenfolge einen Nullwert hat, platziert die Subroutine Tmpnam ihr Ergebnis in einen internen statischen Bereich und gibt einen Zeiger auf diesen Bereich zurück. Der nächste Aufruf dieser Subroutine löscht den Inhalt des Bereichs.

Wenn der Wert des Parameters Zeichenfolge nicht null ist, stellt die Subroutine Tmpnam ihre Ergebnisse in das angegebene Array und gibt den Wert des Parameters Zeichenfolge zurück.

directory Verweist auf den Pfadnamen des Verzeichnisses, in dem die Datei erstellt werden soll

Die Subroutine Tempnam steuert die Auswahl eines Verzeichnisses. Wenn der Parameter Verzeichnis ein Nullzeiger ist oder auf eine Zeichenfolge verweist, die kein Pfadname für ein geeignetes Verzeichnis ist, dann wird der als P_tmpdir in der Datei stdio.h definierte Pfadname verwendet. Wenn dieser Pfadname nicht zugänglich ist, wird das Verzeichnis /tmp verwendet. Sie können die Auswahl eines Pfadnamens umgehen, wenn Sie eine Umgebungsvariable ( TMPVERZ) in der Umgebung des Benutzers angeben. Der Wert der Umgebungsvariablen TMPVERZ ist ein Pfadname für das gewünschte Verzeichnis für temporäre Dateien.

FileXPointer Ein Zeiger auf eine Anfangszeichenfolge, mit der der Dateiname beginnt. Der Parameterwert FileXPointer kann ein Nullzeiger sein oder auf eine Zeichenfolge verweisen, die als erste Zeichen des temporären Dateinamens verwendet werden soll. Die Anzahl der zulässigen Zeichen ist vom Dateisystem abhängig, aber maximal 5 Byte sind zulässig.

Rückgabewerte

Nach ihrer Beendigung ordnet die Subroutine Tempnam mithilfe der Subroutine Malloc Speicherbereich für die Zeichenfolge zu, stellt den generierten Pfadnamen in diesen Speicherbereich und gibt einen Zeiger auf den Speicherbereich zurück. Andernfalls wird ein Nullzeiger zurückgegeben und die globale Variable Fehlernummer wird gesetzt, um den Fehler anzuzeigen. Der von Tempnam zurückgegebene Zeiger kann in der Subroutine Frei verwendet werden, wenn der Speicherbereich nicht mehr benötigt wird.

Fehlercodes

Die Subroutine Tempnam gibt den folgenden Fehlercode zurück, wenn sie nicht erfolgreich ist:

Element Beschreibung
ENOMEM Es ist nicht genügend Speicherplatz verfügbar.
Element Beschreibung
ENINVAL (AUSWERTUNG) Zeigt einen ungültigen Zeichenfolge -Wert an.