"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como o os.FileMode converte permissões antes de definir sinalizadores?

Como o os.FileMode converte permissões antes de definir sinalizadores?

Publicado em 19/11/2024
Navegar:838

How Does os.FileMode Convert Permissions Before Setting Flags?

Como os.FileMode converte permissões antes de definir sinalizadores

Preocupação original

Ao usar o os.FileMode com números octais ou decimais, as permissões de arquivo resultantes nem sempre parecem corresponder ao comportamento esperado. Especificamente, passar um número decimal (sem zero à esquerda) resulta em atributos de arquivo diferentes de passar o equivalente octal.

Lógica de conversão

os.FileMode aceita um número inteiro como entrada e representa-o internamente como um número inteiro não assinado de 32 bits. Os nove bits menos significativos correspondem às permissões de arquivo Unix, enquanto os 12 bits restantes não são utilizados. Ao converter um número octal em um inteiro, a especificação da linguagem interpreta o número como base 8 se começar com um zero à esquerda ("0"). Caso contrário, ele interpreta o número como base 10.

Exemplo

Considere o número octal "0700" que representa as permissões "rwx------".

  • Passar "0700" para os.FileMode resultará na definição das permissões corretas.
  • Passar "700" (sem zero à esquerda) para os.FileMode também resultará no permissões corretas sendo definidas, pois a especificação do idioma o interpreta automaticamente como octal porque começa com um dígito.
  • Passar "1274" (a representação decimal de "0700") para os.FileMode resultará em permissões incorretas sendo definir. Isso ocorre porque a especificação da linguagem interpreta "1274" como um número de base 10.

Nota adicional

Os 12 bits não utilizados na representação os.FileMode indicam recursos especiais de arquivo. No entanto, estes não são relevantes para permissões básicas de arquivo.

Declaração de lançamento Este artigo foi reimpresso em: 1729743262 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3