ein Kapitel zurück                                           ein Kapitel weiter

Neben der Funktion open können sie mit der Funktion creat ebenfalls eine neue Datei anlegen. Der Syntax von creat sieht folgendermaßen aus bei UNIX/LINUX...

#include <fcntl.h>
#inlcude <sys/types.h>
#include <sys/stat.h>

int creat(const char *pfad, int modus);

...und bei MS-DOS/Win...

#include <fcntl.h>
#inlcude <io.h>
#include <sys\stat.h>

int creat(const char *pfad, int modus);

'creat' funktioniert eigentlich genauso wie die Funktion 'open'. Der Pfad ist der Name der neu anzulegenden Datei mit Pfad. Und Modus sind die Modi gemeint die sie im Kapitel 'open' kennen gelernt haben. Existiert diese Datei bereits wird diese geöffnet und geleert. Wie mit O_TRUNC. Gemeint sind die Modi für die Zugriffsrechte. Also alle die mit S_... beginnen. Hier ein Programmbeispiel für DOS....

/*Download:creat1.c*/
#include <stdio.h> #include <stdlib.h> #include <io.h> #include <fcntl.h> #include <sys\stat.h> int main() { int handle; if((handle=creat("adresse.txt", S_IREAD)) == -1) { printf("Fehler\n"); exit (0); } close(handle); return 0; }

...und hier eines für UNIX/LINUX...

/*Download:creat2.c*/
#include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <unistd.h> #include <sys/stat.h> int main() { int handle; if((handle=creat("adresse.txt", S_IXUSR)) == -1) { printf("Fehler\n"); exit (0); } close(handle); return 0; }

Bei dem DOS-Programm wird eine Datei erzeugt die man nur Lesen kann. Bei Linux erzeugen wir eine Datei die nur der User ausführen kann.

Nun erreicht man mit der Funktion 'open' mittels O_CREAT und O_TRUNC das selbe wie mit 'creat'. Und somit ist die Funktion 'creat' eigentlich völlig Überflüssig und Umständlich, da eine neu, mit creat angelegte Datei nur beschrieben werden kann. Um die Datei jetzt wieder lesen zu wollen müssen sie zuerst die Datei mit close wieder schließen um sie anschließend gleich wieder mit open zu öffnen.

creat wurde damals benötigt da die Funktion open noch nicht die Angabe von O_CREAT kannte. Jetzt bleibt sie natürlich weiterhin bestehen da sonst alte Programme die zu der Zeit Entwickelt wurden nicht mehr Übersetzt werden können ohne Änderung am Quellcode.

ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf