"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 ?

Publié le 2024-11-19
Parcourir:321

How Does os.FileMode Convert Permissions Before Setting Flags?

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

Problème 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------".

  • En passant "0700" à os.FileMode, les autorisations correctes seront obtenues. set.
  • Le passage de "700" (sans zéro initial) à os.FileMode entraînera également la définition des autorisations correctes, car la spécification du langage l'interprète automatiquement comme octal car il commence par un chiffre.
  • Le passage de "1274" (la représentation décimale de "0700") à os.FileMode entraînera la définition d'autorisations incorrectes. 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.

Déclaration de sortie Cet article est réimprimé à l'adresse : 1729743262. En cas d'infraction, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3