creat(2) creat(2)
NAME
creat, creat64 - Neue Datei erstellen oder vorhandene Datei über-
schreiben
SYNTAX
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int creat(const char *path, modet mode);
int creat64(const char *path, modet mode);
BESCHREIBUNG
creat() erstellt eine neue Datei oder bereitet eine vorhandene Datei
vor, neu beschrieben zu werden. Die Datei wird durch den Pfadnamen
angegeben, auf den path zeigt.
Wenn die Datei vorhanden ist, wird ihre Länge auf 0 abgeschnitten, und
Modus und Eigentümer bleiben unverändert.
Wenn die Datei nicht existiert, wird die Datei-Eigentümernummer auf
die effektive Benutzernummer des Prozesses gesetzt. Die Gruppennummer
der Datei wird auf die effektive Gruppennummer des Prozesses gesetzt;
wenn aber das SISGID-Bit im übergeordneten Verzeichnis gesetzt ist,
dann wird die Gruppennummer der Datei vom übergeordneten Verzeichnis
geerbt. Die Zugriffserlaubnis-Bits des Dateimodus werden auf den Wert
von mode wie folgt geändert:
- Wenn die Gruppennummer der neuen Datei nicht zur effektiven oder
einer der zusätzlichen Gruppennummern paßt, wird das SISGID-Bit
gelöscht.
- Alle Bits, die in der Dateityp-Erstellungsmaske des Prozesses
gesetzt sind, werden gelöscht [siehe umask(2)].
- Das Bit für die Sicherung des Textsegments nach der Ausführung wird
gelöscht [siehe chmod(2)].
Nach erfolgreicher Beendigung wird ein Dateideskriptor mit reiner
Schreiberlaubnis zurückgegeben, und die Datei wird zum Schreiben
geöffnet, auch wenn der Modus das Schreiben nicht zuläßt. Der
Schreib-/Lesezeiger wird auf den Anfang der Datei gesetzt. Die Datei
bleibt standardmäßig bei exec-Systemaufrufen geöffnet [siehe
fcntl(2)]. Eine neue Datei kann mit einem Modus eröffnet werden, der
Schreiben nicht zuläßt.
Der Aufruf creat(path, mode) entspricht dem Aufruf von
open(path, OWRONLY | OCREAT | OTRUNC, mode)
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
creat(2) creat(2)
Es besteht kein funktionaler Unterschied zwischen creat() und
creat64(), außer bei der Interpretation von off64t [siehe lfs(5)].
FEHLER
Die folgenden Beschreibungen der Fehlercodes sind funktionsspezifisch.
Eine allgemeingültige Beschreibung finden Sie in introprm2(2) bzw. in
errno(5).
creat() ist erfolglos, wenn einer oder mehrere der folgenden Punkte
zutreffen:
EACCES Eine Komponente des Pfades darf nicht durchsucht werden.
EACCES Die Datei ist nicht vorhanden, und das Verzeichnis, in
dem die Datei angelegt werden soll, läßt das Schreiben
nicht zu.
EACCES Die Datei ist vorhanden, und die Schreiberlaubnis wird
verweigert.
EAGAIN Die Datei ist vorhanden, obligatorisches Sperren von
Dateien und Dateisätzen ist gesetzt, und in der Datei
sind noch Dateisatzsperren vorhanden [siehe chmod(2)].
EFAULT path weist über den zugewiesenen Adreßraum des Prozesses
hinaus.
EISDIR Die angegebene Datei ist ein Verzeichnis.
EINTR Ein Signal wurde während des Systemaufrufs creat() abge-
fangen.
ELOOP Während der Übersetzung von path wurden zu viele symbo-
lische Verweise angetroffen.
EMFILE Der Prozeß hat zu viele Dateien geöffnet [siehe
getrlimit(2)].
ENAMETOOLONG Die Länge des path-Arguments überschreitet PATHMAX,
oder die Länge einer path-Komponente überschreitet
NAMEMAX.
ENOTDIR Eine Komponente des Pfadnamens ist kein Verzeichnis.
ENOENT Eine Komponente des Pfadnamens existiert nicht.
ENOENT Der Pfadname ist Null.
EROFS Die angegebene Datei steht in einem schreibgeschützten
Dateisystem.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
creat(2) creat(2)
ETXTBSY Die Datei ist eine reine Programmdatei, die gerade aus-
geführt wird.
ENFILE Die Systemdateitabelle ist voll.
ENOSPC Das Dateisystem hat keine Indexeinträge mehr.
ERGEBNIS
Nach erfolgreicher Beendigung wird eine nicht negative ganze Zahl,
d. h. der Dateideskriptor, zurückgegeben. Andernfalls wird -1 zurück-
gegeben, es wird keine Datei geöffnet oder modifiziert und errno wird
zur Anzeige des Fehlers gesetzt.
SIEHE AUCH
chmod(2), close(2), dup(2), fcntl(2), getrlimit(2), lseek(2), open(2),
read(2), umask(2), write(2), fcntl(5), lfs(5), stat(5), types(5).
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98