Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Linux-Dateioperationen

Linux-Dateioperationen

坏嘻嘻
坏嘻嘻Original
2018-09-13 18:24:561888Durchsuche

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


  • S_IWGRP-Gruppe kann schreiben


  • S_IXGRP-Gruppe kann


  • S_IRWXG-Gruppe kann lesen, schreiben und ausführen

  • S_IROTH Andere können lesen

  • S_IWOTH Andere können schreiben

  • S_IXOTH Andere können

  • S_IRWXO Andere ausführen kann lesen, schreiben, ausführen

  • S_ISUID Legt die Ausführungs-ID des Benutzers fest

  • S_ISGID Legt die Ausführungs-ID der Gruppe fest
  • Das Modus-Flag kann auch Zahlen verwenden, um Dateiberechtigungen darzustellen:

Jede Zahl kann den Wert 1 (Ausführungsberechtigung), 2 (Schreibberechtigung), 4 (Leseberechtigung), 0 (keine) oder die Summe dieser Werte annehmen.

    Die erste Ziffer bedeutet das Festlegen der Benutzer-ID

  • Die zweite Ziffer bedeutet Gruppen-ID festlegen

  • Die dritte Ziffer stellt die eigenen Berechtigungsbits des Benutzers dar

  • Die vierte Ziffer gibt die Berechtigungen der Gruppe an

  • Die fünfte Ziffer stellt die Berechtigungen anderer dar
  • open("test", O_CREAT, 10705);
Die obige Anweisung entspricht:

open( "test", O_CREAT , S_IRWXU |. S_IXOTH |. S_IXOTH );

;

int write (int fd, const void *buf, size_t length);

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


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.

  • Die Implementierung von write() schreibt Längenbytes aus dem Puffer, auf den buf zeigt, in den Dateideskriptor in der Datei, auf die fd zeigt, die Rückgabe Der Wert ist die Anzahl der tatsächlich geschriebenen Bytes.


  • Positionierung

  • Für zufällige Dateien können wir den Speicherort zum Lesen und Schreiben zufällig angeben:
int lseek(int fd, offset_t offset, int whence);

lseek() verschiebt den Lese- und Schreibzeiger der Datei relativ zu wherece um Offset-Bytes (kann ein negativer Wert sein). Wenn der Vorgang erfolgreich ist, wird die Position des Dateizeigers relativ zum Dateikopf zurückgegeben.

Der Parameter wherece kann die folgenden Werte verwenden:

SEEK_SET: relativ zum Anfang der Datei.
SEEK_CUR: Die aktuelle Position des relativen Datei-Lese- und Schreibzeigers.

SEEK_END: ​​​​relativ zum Ende der Datei.

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

  • w, wb Im schreibgeschützten Modus öffnen. Wenn die Datei nicht existiert, wird die Datei erstellt, andernfalls wird die Datei abgeschnitten


  • 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

Linux-Dateioperationen

  • /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 .


  • /home----das Home-Verzeichnis für normale Benutzer hat im Allgemeinen sein eigenes Verzeichnis Der Name ist nach dem Konto des Benutzers benannt.


  • /lib----Bibliotheksdateispeicherverzeichnis, die grundlegendste gemeinsam genutzte dynamische Linkbibliothek des Systems, ähnlich in die Windows-DLL-Datei hinein.


  • /lost+found----Normalerweise leer, wenn das System unerwartet abstürzt oder die Maschine unerwartet herunterfährt. Einige Dateifragmente werden generiert und hier abgelegt.


  • /mnt----praktisch für Benutzer, um vorübergehend andere Dateisysteme bereitzustellen, z. B. das optische Laufwerk /mnt/, geben Sie dieses Verzeichnis ein, um den Inhalt des CD-ROM-Laufwerks automatisch anzuzeigen Identifizieren Sie einige Geräte, die in diesem Verzeichnis bereitgestellt sind, z. B. USB-Laufwerke, CD-ROM-Laufwerke usw.


  • /opt----Das Verzeichnis, in dem zusätzliche Installationssoftware auf dem Host gespeichert ist


  • /proc----Wenn das Betriebssystem ausgeführt wird, werden Prozess- und Kernelinformationen (z. B. CPU, Festplattenpartition, Speicherinformationen usw.) angezeigt. usw.) werden hier gespeichert. Es handelt sich um eine Zuordnung des Systemspeichers, und Systeminformationen können durch direkten Zugriff auf dieses Verzeichnis abgerufen werden.


  • /root----Das Home-Verzeichnis des Benutzers mit Superprivilegien


  • /sbin----Das Verzeichnis, in dem Benutzer mit Superprivilegien ausführbare Befehle speichern. Normale Benutzer haben in diesem Verzeichnis keine Berechtigung zum Ausführen von Befehlen


  • /tmp-----speichert temporäre Dateien.


  • /usr-----Verzeichnis, in dem Systemanwendungen und Dateien (z. B. Befehle und Hilfedateien) Programme speichern , ähnlich dem Programmdateiverzeichnis unter Windows.


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


  • /sys----

    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

  • Verwandte Empfehlungen:
  • Linux-Berechtigungen für übergeordnete Verzeichnisse wirken sich auf den Betrieb von Unterverzeichnisdateien aus

So führen Sie Lese- und Schreibvorgänge für Python-Dateien interaktiv mit Linux-Shell-Variablenbefehlen aus

Das obige ist der detaillierte Inhalt vonLinux-Dateioperationen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn