Detaillierte Erläuterung der Wissenspunkte zu Linux-Dateivorgängen

Detaillierte Erläuterung der Wissenspunkte zu Linux-Dateivorgängen

Verwandte Systemaufrufe für Dateioperationen

erstellen

int creat(const char *Dateiname, mode_t Modus);

Der Parameter mode gibt die Zugriffsberechtigungen der neu erstellten Datei an. Er und umask bestimmen zusammen die endgültigen Berechtigungen der Datei (mode & umask). umask stellt einige Zugriffsberechtigungen dar, die beim Erstellen der Datei entfernt werden müssen. Es betrifft nur die Lese-, Schreib- und Ausführungsberechtigungen. Die aufrufende Funktion ist int umask (int newmask).

Offen

int öffnen(const char *Pfadname, int Flags);

Pfadname ist der Name der Datei, die wir öffnen möchten (einschließlich des Pfadnamens, standardmäßig ist es der aktuelle Pfad)

FlaggenOffene Flagge

O_RDONLY Öffnet die Datei schreibgeschützt

O_WRONLY Öffnet die Datei nur zum Schreiben

O_RDWR Öffnet die Datei zum Lesen und Schreiben

O_APPEND Öffnet die Datei im Anfügemodus

O_CREAT Datei erstellen

O_EXEC Wenn O_CREAT verwendet wird und die Datei bereits existiert, tritt ein Fehler auf.

O_NOBLOCK Öffnet eine Datei im nicht blockierenden Modus

O_TRUNC Wenn die Datei bereits existiert, löschen Sie den Inhalt der Datei.

int open (const char *Pfadname, int flag, mode_t mode)

Wenn das Flag O_CREATE ist, geben Sie das Modus-Flag an, um die Zugriffsrechte der Datei anzugeben.

S_IRUSR Benutzer kann lesen

S_IWUSR-Benutzer kann schreiben

Der Benutzer S_IXUSR kann ausführen

S_IRWXU Benutzer kann lesen, schreiben und ausführen

Die Gruppe S_IRGRP kann lesen

Die S_IWGRP-Gruppe kann schreiben

Die Gruppe S_IXGRP kann ausführen

Die Gruppe S_IRWXG kann lesen, schreiben und ausführen

S_IROTH Andere können lesen

S_IWOTH Andere können schreiben

S_IXOTH Andere können ausführen

S_IRWXO Andere können lesen, schreiben und ausführen

S_ISUID Legt die Ausführungs-ID des Benutzers fest

S_ISGID Setzt die Ausführungs-ID der Gruppe

Das Modus-Flag kann auch Zahlen verwenden, um Dateiberechtigungen darzustellen:

Jede Zahl kann 1 (Ausführungsberechtigung), 2 (Schreibberechtigung), 4 (Leseberechtigung), 0 (keine) oder eine Summe dieser Werte sein.

Die erste Ziffer gibt die Einstellung der Benutzer-ID an

Die zweite Ziffer gibt die Gruppen-ID an

Das dritte Bit gibt das Berechtigungsbit des Benutzers an

Die vierte Ziffer gibt die Berechtigungen der Gruppe an

Die fünfte Ziffer gibt die Berechtigungen anderer an

öffnen("test", O_CREAT, 10705);

Die obige Anweisung ist gleichbedeutend mit:

öffnen("test", O_CREAT, S_IRWXU | S_IROTH | S_IXOTH | S_ISUID );

Lesen und Schreiben

int lesen(int fd, const void *buf, size_t Länge);
int schreiben(int fd, const void *buf, size_t Länge);

Der Parameter fd ist der Dateideskriptor, buf ist der Zeiger auf den Puffer, length ist die Größe des Puffers (in Bytes) und der Rückgabewert ist die Anzahl der tatsächlich gelesenen und geschriebenen Bytes.

read() liest length Bytes aus der durch den Dateideskriptor fd angegebenen Datei in den Puffer, auf den buf zeigt, und der Rückgabewert ist die Anzahl der tatsächlich gelesenen Bytes

Die write()-Implementierung schreibt length Bytes aus dem Puffer, auf den buf zeigt, in die Datei, auf die der Dateideskriptor fd zeigt, und der Rückgabewert ist die Anzahl der tatsächlich geschriebenen Bytes.

Position

Für zufällige Dateien können wir zufällige Speicherorte zum Lesen und Schreiben angeben:
int lseek(int fd, offset_t offset, int woher);

lseek() verschiebt den Lese-/Schreibzeiger der Datei um den Offset (der negativ sein kann) in Bytes relativ zum Ausgangspunkt. Wenn der Vorgang erfolgreich ist, wird der Dateizeiger relativ zum Dateikopf zurückgegeben.

Der Wherece-Parameter kann die folgenden Werte annehmen:

SEEK_SET: Relativ zum Anfang der Datei.
SEEK_CUR: Die aktuelle Position des relativen Dateilese- und -schreibzeigers.
SEEK_END: ​​Relativ zum Ende der Datei.

Schließung

int schließen(int fd);

C-Bibliotheksfunktionsdateioperationen - unabhängig von der spezifischen Betriebssystemplattform

Erstellen und Öffnen

DATEI *fopen(const char *Pfad, const char *Modus);
fopen() öffnet die angegebene Datei Dateiname, wobei mode der Öffnungsmodus ist. Das Linux-System unterscheidet nicht zwischen Binärdateien und Textdateien.

Der Wert des Modus

r, rb Im Nur-Lese-Modus öffnen

w, wb Nur zum Schreiben geöffnet. Wenn die Datei nicht existiert, wird sie erstellt, andernfalls wird sie abgeschnitten.

a, ab werden im Anfügemodus geöffnet. Wenn die Datei nicht existiert, erstellen Sie sie

r+, r+b, rb+ im Lese-/Schreibmodus öffnen

w+, w+b, wh+ Offen zum Lesen und Schreiben. Wenn die Datei nicht existiert, wird eine neue Datei erstellt, andernfalls wird die Datei abgeschnitten.

a+, a+b, ab+ Zum Lesen und Anhängen geöffnet. Wenn die Datei nicht existiert, erstellen Sie eine neue Datei

Lesen und Schreiben

int fgetc(DATEI *Stream);
int fputc(int c, DATEI *stream);
char *fgets(char *s, int n, DATEI *stream);
int fputs(const char *s, DATEI *stream);
int fprintf(DATEI *Stream, const char *Format, ...);
int fscanf (DATEI *Stream, const char *Format, ...);
size_t fread(void *ptr, size_t Größe, size_t n, DATEI *stream);
size_t fwrite (const void *ptr, size_t Größe, size_t n, DATEI *stream);
int fsetpos(DATEI *stream, fpos_t *pos);
nt fsetpos(DATEI *stream, const fpos_t *pos);
int fseek(DATEI *Stream, langer Offset, int woher);

fread() liest n Felder aus dem Stream, jedes Feld hat die Größe Bytes, fügt die gelesenen Felder in das Zeichen-Array ein, auf das ptr zeigt, und gibt die Anzahl der tatsächlich gelesenen Felder zurück.

write() schreibt n Felder aus dem Array, auf das der Puffer ptr zeigt, in den Stream, wobei jedes Feld size Bytes lang ist, und gibt die Anzahl der tatsächlich geschriebenen Felder zurück.

Schließung

int fclose (DATEI *stream);

Verzeichnisstruktur des Linux-Dateisystems

/bin----speichert die am häufigsten verwendeten grundlegenden Befehle wie ls, cp, mkdir usw. Alle Dateien in diesem Verzeichnis sind ausführbar.

/boot----Einige Kerndateien, die beim Starten von Linux verwendet werden, darunter einige Verbindungsdateien und Image-Dateien wie vmlinuz, initrd.img

/dev----Gerätedateispeicherverzeichnis. Anwendungen können auf tatsächliche Geräte zugreifen, indem sie diese Dateien lesen, schreiben und steuern.

/etc----Konfigurationsdateien und Unterverzeichnisse, die für die Systemverwaltung erforderlich sind, wie z. B. Konfigurationsdateien für Benutzerkonten und Passwörter.

/home----Das Home-Verzeichnis normaler Benutzer. Jeder Benutzer hat sein eigenes Verzeichnis, das normalerweise nach seinem Benutzerkonto benannt ist.

/lib----Das Verzeichnis, in dem Bibliotheksdateien gespeichert sind, die grundlegendste gemeinsam genutzte dynamische Linkbibliothek des Systems, ähnlich der DLL-Datei in Windows.

/lost+found----Normalerweise ist es leer. Wenn das System unerwartet abstürzt oder die Maschine unerwartet herunterfährt, werden einige Dateifragmente generiert und hier abgelegt.

/mnt----Es ist praktisch für Benutzer, andere Dateisysteme vorübergehend zu mounten. Wenn Sie beispielsweise das CD-ROM-Laufwerk auf /mnt/ mounten, können Sie dieses Verzeichnis aufrufen, um den Inhalt des CD-ROM-Laufwerks anzuzeigen.

Medien – Identifizieren Sie automatisch einige Geräte und mounten Sie sie in diesem Verzeichnis, z. B. USB-Sticks, optische Laufwerke usw.

/opt----Verzeichnis zum Speichern zusätzlicher auf dem Host installierter Software

/proc----Wenn das Betriebssystem ausgeführt wird, werden hier Prozess- und Kernelinformationen (wie CPU, Festplattenpartition, Speicherinformationen usw.) gespeichert. Es handelt sich um eine Abbildung des Systemspeichers und ist im Speicher vorhanden. Systeminformationen werden durch direkten Zugriff auf dieses Verzeichnis abgerufen.

/root----Home-Verzeichnis von Benutzern mit Superprivilegien

/sbin----Das Verzeichnis, in dem ausführbare Befehle von Benutzern mit Superprivilegien gespeichert werden. Normale Benutzer haben keine Berechtigung, Befehle in diesem Verzeichnis auszuführen.

/tmp-----Temporäre Dateien speichern.

/usr-----Das Verzeichnis, in dem Systemanwendungen und -dateien (wie Befehle und Hilfedateien) gespeichert werden, ähnlich dem Programmdateiverzeichnis unter Windows.

/var-----In diesem Verzeichnis werden Verzeichnisse abgelegt, die häufig geändert werden, z. B. Protokolldateien

/sys----Eine visuelle Darstellung des Kernel-Gerätebaums. Wenn ein Kernelobjekt erstellt wird, werden auch die entsprechenden Dateien und Verzeichnisse im Kernelobjekt-Subsystem erstellt.

/initrd --- Wenn das initrd-Image während des Startvorgangs als temporäres Root-Dateisystem verwendet wird, wird das ursprüngliche anfängliche RAM-Dateisystem dem Verzeichnis /initrd zugeordnet, nachdem /linuxrc darauf ausgeführt wurde, um das echte Root-Dateisystem zu mounten.

Linux-Dateisystem und Gerätetreiber

Das könnte Sie auch interessieren:
  • Eine detaillierte Einführung in Linux-Dateiberechtigungen
  • So dekomprimieren Sie mehrere Dateien mit dem Befehl „unzip“ in Linux
  • Zusammenfassung des Dateisystemtyps der Linux-Partition
  • Bei der Installation von jdk1.8 auf CentOS gibt es kein /lib/ld-linux.so.2: Ursachenanalyse dieser Datei
  • Mit Golang Zugriffs-/Erstellungs-/Änderungszeit von Dateien unter Linux abrufen
  • Dateiübertragungsmethode des Linux-Systems
  • So zeigen Sie Protokolldateien mit Tail unter Linux an
  • So laden Sie Dateien und Ordner über SSH auf einen Linux-Server hoch
  • So laden Sie mit FileZilla Dateien von Linux herunter

<<:  Vue implementiert einen einfachen Rechner

>>:  Vue verwendet Filter zum Formatieren von Daten

Artikel empfehlen

Detaillierte Beispiele zur Ajax-Verwendung in js und jQuery

Inhaltsverzeichnis Natives JS So senden Sie eine ...

Referenz zum Detaildesign des Benutzererlebnisses auf B2C-Websites

Als ich kürzlich Apple.com/Ebay.com/Amazon.com/sh...

So lösen Sie das Problem zu vieler geöffneter Dateien in Linux

Die Ursache liegt darin, dass der Prozess zu eine...

Lösung für MySQL-Fehlercode 1862 Ihr Passwort ist abgelaufen

Der Blogger hat MySQL ein oder zwei Monate lang n...

Verwenden Sie die Befehle more, less und cat in Linux, um Dateiinhalte anzuzeigen

Unter Linux können die Befehle cat, more und less...

Zusammenfassung der Browserkompatibilität gängiger CSS-Eigenschaften (empfohlen)

Warum müssen wir die Browserkompatibilität von CS...

HTML ist eigentlich die Anwendung zum Erlernen mehrerer wichtiger Tags

Nachdem der Artikel „Dies wird eine Revolution“ er...

HTML-Meta erklärt

Einführung Der Meta-Tag ist ein Hilfstag im HEAD-...

Lernunterlagen zum Schreiben des ersten Vue-Programms

Inhaltsverzeichnis 1. Schreiben Sie ein HTML, das...