
Comment déterminer l'état d'un fichier exécutable dans Go
Étant donné une instance os.FileInfo, vous devrez peut-être vérifier si un fichier est exécutable dans Aller. Cela nécessite de déchiffrer les bits d'autorisation de os.FileInfo.Mode().
Cas de test :
#!/usr/bin/env bash
mkdir -p test/foo/bar
touch test/foo/bar/{baz.txt,quux.sh}
chmod +x test/foo/bar/quux.sh<code class="go">import (
"os"
"path/filepath"
"fmt"
)</code>Solution :
L'exécutabilité du fichier est déterminée par les bits d'autorisation Unix stockés dans os.FileMode.Perm(). Ces bits forment un masque de bits de 9 bits (octal 0777).
Signification du bit d'autorisation Unix :
rwxrwxrwx
Pour chaque classe d'utilisateurs :
Fonctions pour vérifier l'exécutabilité :
Exécutable par propriétaire :
<code class="go">func IsExecOwner(mode os.FileMode) bool {
return mode&0100 != 0
}</code>Exécutable par groupe :
<code class="go">func IsExecGroup(mode os.FileMode) bool {
return mode&0010 != 0
}</code>Exécutable par d'autres :
<code class="go">func IsExecOther(mode os.FileMode) bool {
return mode&0001 != 0
}</code>Exécutable par n'importe lequel :
<code class="go">func IsExecAny(mode os.FileMode) bool {
return mode&0111 != 0
}</code>Exécutable par tous :
<code class="go">func IsExecAll(mode os.FileMode) bool {
return mode&0111 == 0111
}</code><code class="go">func main() {
filepath.Walk("test", func(path string, info os.FileInfo, err error) error {
if err != nil || info.IsDir() {
return err
}
fmt.Printf("%v %v", path, IsExecAny(info.Mode().Perm()))
}
}</code>Sortie attendue :
test/foo/bar/baz.txt false test/foo/bar/quux.txt true
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!
Utilisation de #include en langage C
Changer la couleur d'arrière-plan du mot en blanc
solution de chemin fakepath
Quelles sont les commandes dos ?
Que faire si le changement de nom du fichier temporaire échoue
Que faire si le module spécifié est introuvable
La différence entre la grande fonction et la fonction maximale
Quelles sont les méthodes pour télécharger des vidéos depuis Douyin ?