Maison >développement back-end >Golang >Comment os.FileMode convertit-il les autorisations avant de définir des indicateurs ?

Comment os.FileMode convertit-il les autorisations avant de définir des indicateurs ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-25 04:54:02417parcourir

How Does os.FileMode Convert Permissions Before Setting Flags?

Comment os.FileMode convertit les autorisations avant de définir des indicateurs

Préoccupation d'origine

Lors de l'utilisation de os.FileMode avec des nombres octaux ou décimaux, les autorisations de fichiers résultantes ne semblent pas toujours correspondre au comportement attendu. Plus précisément, la transmission d'un nombre décimal (sans zéro en tête) entraîne des attributs de fichier différents de la transmission de l'équivalent octal.

Logique de conversion

os.FileMode accepte un nombre entier en entrée. et le représente en interne sous la forme d'un entier non signé de 32 bits. Les neuf bits les moins significatifs correspondent aux autorisations des fichiers Unix, tandis que les 12 bits restants sont inutilisés. Lors de la conversion d'un nombre octal en nombre entier, la spécification du langage interprète le nombre en base 8 s'il commence par un zéro non significatif ("0"). Sinon, il interprète le nombre en base 10.

Exemple

Considérez le nombre octal "0700" qui représente les autorisations "rwx------".

  • Passer "0700" à os.FileMode entraînera la définition des autorisations correctes.
  • Passer "700" (sans zéro en tête) à os.FileMode entraînera également le les autorisations correctes sont définies, car la spécification du langage l'interprète automatiquement comme octal car il commence par un chiffre.
  • Passer "1274" (la représentation décimale de "0700") à os.FileMode entraînera des autorisations incorrectes. ensemble. En effet, la spécification du langage interprète "1274" comme un nombre en base 10.

Remarque supplémentaire

Les 12 bits inutilisés dans la représentation os.FileMode indiquent fonctionnalités de fichiers spéciales. Cependant, celles-ci ne sont pas pertinentes pour les autorisations de base sur les fichiers.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn