Das Beispiel in diesem Artikel beschreibt die Methode der interaktiven Ausführung von Lese- und Schreibvorgängen für Python-Dateien und Befehlen für Linux-Shell-Variablen. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
Zugehörige Systemaufrufe für Dateioperationen
Create
int creat(const char *filename, mode_t mode);
Parameter mode gibt an new Die Zugriffsberechtigung der Datei, die zusammen mit umask die endgültige Berechtigung der Datei bestimmt (mode&umask), wobei umask einige Zugriffsberechtigungen darstellt, die beim Erstellen der Datei entfernt werden müssen. Es betrifft nur Lesen, Schreiben und Ausführung Berechtigungen. Die aufrufende Funktion ist int umask (int newmask).
Öffnen
int open(const char *pathname, int flags);
pathname ist der Dateiname, den wir öffnen möchten (einschließlich des Pfadnamens, der Standard ist der aktuelle Pfad)
Flags zum Öffnen markieren
O_RDONLY öffnet die Datei im schreibgeschützten Modus
O_WRONLY öffnet die Datei nur zum Schreiben
O_RDWR zum Lesen und Schreiben Öffnen Sie die Datei als
O_APPEND Öffnen Sie die Datei als Anhängen
O_CREAT erstellt eine Datei
O_EXEC wenn O_CREAT verwendet wird und die Datei bereits existiert, tritt ein Fehler auf
O_NOBLOCK öffnet eine Datei auf nicht blockierende Weise
O_TRUNC Wenn die Datei bereits existiert, löschen Sie den Inhalt der Datei
int open(const char *pathname, int flag, mode_t mode)
Wenn Flag O_CREATE ist, geben Sie das Modus-Flag an, um die Dateizugriffsberechtigungen anzugeben
S_IRUSR Benutzer kann lesen
S_IWUSR Benutzer kann schreiben
S_IXUSR Benutzer kann ausführen
S_IRWXU Benutzer kann lesen, schreiben, ausführen
S_IRGRP-Gruppe kann
Jede Zahl kann den Wert 1 (Ausführungsberechtigung), 2 (Schreibberechtigung), 4 (Leseberechtigung), 0 (keine) oder die Summe dieser Werte annehmen.
open( "test", O_CREAT , S_IRWXU |. S_IXOTH |. S_IXOTH );
;
read() liest Längenbytes aus der durch den Dateideskriptor fd angegebenen Datei in den Puffer, auf den buf zeigt, und der Rückgabewert ist die tatsächlich gelesene Bytezahl.
Positionierung
SEEK_SET: relativ zum Anfang der Datei.
SEEK_CUR: Die aktuelle Position des relativen Datei-Lese- und Schreibzeigers.
Schließen
int close(int fd);
C-Bibliotheksfunktionsdateibetrieb – unabhängig von der spezifischen Betriebssystemplattform
Erstellen und öffnen Sie
FILE *fopen(const char *path, const char *mode);
fopen() implementiert das Öffnen der angegebenen Datei Dateiname, wobei der Modus der Öffnungsmodus Linux ist Das System unterscheidet nicht zwischen Binärdateien und Textdateien. Moduswert
r, rb im schreibgeschützten Modus geöffnet
a, ab werden im Anhängemodus geöffnet. Wenn die Datei nicht vorhanden ist, erstellen Sie die Datei
r+, r+b, rb+ Im Lese-/Schreibmodus öffnen
w+, w+b, wh+ öffnen sich im Lese- und Schreibmodus. Wenn die Datei nicht existiert, wird eine neue Datei erstellt, andernfalls wird die Datei abgeschnitten
a+, a+b , ab+ zum Lesen und Öffnen im Anhängemodus. Wenn die Datei nicht vorhanden ist, erstellen Sie eine neue Datei
Lesen und schreiben
int fgetc(FILE *stream);
int fputc(int c, FILE *stream);
char *fgets(char *s, int n, FILE *stream);
int fputs(const char *s, FILE *stream);
int fprintf (FILE * stream, const char *format, ...);
int fscanf (FILE *stream, const char *format, ...);
size_t fread(void *ptr, size_t size, size_t n , FILE * stream);
size_t fwrite (const void *ptr, size_t size, size_t n, FILE *stream);
int fsetpos(FILE *stream, fpos_t *pos);
nt fsetpos(FILE *stream, const fpos_t *pos);
int fseek(FILE *stream, long offset, int wherece);
fread() implementiert das Lesen von n Feldern aus dem Stream, jeweils Die Die Größe des Felds beträgt Bytes, und die gelesenen Felder werden in das Zeichenarray eingefügt, auf das ptr zeigt, und die tatsächliche Anzahl der gelesenen Felder wird zurückgegeben.
write() implementiert das Schreiben von n Feldern aus dem Array, auf das der Puffer ptr zeigt, jedes Mal in den Stream. Die Länge von Jedes Feld hat eine Größe von Bytes und die Anzahl der tatsächlich geschriebenen Felder wird zurückgegeben.
Schließen
int fclose (FILE *stream);
Verzeichnisstruktur des Linux-Dateisystems
/bin----speichert die am häufigsten verwendeten Grundbefehle, z. B. ls , cp, mkdir usw., die Dateien in diesem Verzeichnis sind alle ausführbar.
/boot----Einige Kerndateien, die beim Starten von Linux verwendet werden, einschließlich einiger Verbindungsdateien und Bilddateien, z B. vmlinuz, initrd.img
/dev----Gerätedateispeicherverzeichnis, die Anwendung übergibt diese Dateien zum Lesen , schreiben und steuern Sie das eigentliche Gerät.
/etc----Konfigurationsdateien und Unterverzeichnisse, die für die Systemverwaltung erforderlich sind, z. B. Benutzerkonto- und Passwortkonfigurationsdateien .
Eine intuitive Widerspiegelung des Kernel-Gerätebaums. Wenn ein Kernel-Objekt erstellt wird, werden auch die entsprechenden Dateien und Verzeichnisse im Kernel-Objekt-Subsystem erstellt.
/initrd---Wenn das initrd-Image während des Startvorgangs als temporäres Root-Dateisystem verwendet wird Prozess: Nach der Ausführung von /linuxrc zum Mounten des echten Root-Dateisystems wird das ursprüngliche anfängliche RAM-Dateisystem dem Verzeichnis /initrd zugeordnet.
Linux-Dateisystem und Gerätetreiber
Das obige ist der detaillierte Inhalt vonLinux-Dateioperationen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!