Wie os.FileMode Berechtigungen vor dem Setzen von Flags konvertiert
Ursprüngliches Anliegen
Bei Verwendung des Wenn Sie die Funktion os.FileMode mit Oktal- oder Dezimalzahlen verwenden, scheinen die resultierenden Dateiberechtigungen nicht immer dem erwarteten Verhalten zu entsprechen. Insbesondere führt die Übergabe einer Dezimalzahl (ohne führende Null) zu anderen Dateiattributen als die Übergabe des Oktaläquivalents.
Konvertierungslogik
os.FileMode akzeptiert eine Ganzzahl als Eingabe und stellt es intern als 32-Bit-Ganzzahl ohne Vorzeichen dar. Die neun niedrigstwertigen Bits entsprechen den Unix-Dateiberechtigungen, während die restlichen 12 Bits ungenutzt sind. Bei der Konvertierung einer Oktalzahl in eine ganze Zahl interpretiert die Sprachspezifikation die Zahl als Basis 8, wenn sie mit einer führenden Null („0“) beginnt. Andernfalls wird die Zahl als Basis 10 interpretiert.
Beispiel
Betrachten Sie die Oktalzahl „0700“, die die Berechtigungen „rwx------“ darstellt.
Zusätzlicher Hinweis
Die nicht verwendeten 12 Bits in der os.FileMode-Darstellung zeigen an spezielle Dateifunktionen. Diese sind jedoch für grundlegende Dateiberechtigungen nicht relevant.
Das obige ist der detaillierte Inhalt vonWie konvertiert os.FileMode Berechtigungen, bevor Flags gesetzt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!