Détermination du nombre de liens physiques vers un fichier en Go
En Go, l'interface FileInfo permet d'accéder aux informations obtenues à partir de la stat( ) appel système. Bien que cette interface englobe des détails tels que le nom du fichier, la taille, l'heure de modification et les autorisations des fichiers, elle ne dispose pas d'un accès direct au nombre de liens physiques pointant vers un fichier donné.
Accès au nombre de liens via les données sous-jacentes. Source
Pour récupérer le nombre de liens, vous pouvez exploiter la méthode Sys() de l'interface FileInfo. Cette méthode permet d'accéder à la structure de données sous-jacente spécifique au système, qui peut inclure des informations supplémentaires au-delà de ce qui est directement exposé par FileInfo.
En particulier, pour les systèmes basés sur Unix, la méthode Sys() renvoie un pointeur vers Type *syscall.Stat_t, qui contient un champ nommé Nlink. Ce champ représente le nombre de liens physiques vers le fichier.
Exemple d'implémentation
Voici un exemple d'implémentation dans Go qui montre comment obtenir le nombre de liens physiques d'un fichier. :
<code class="go">package main import ( "fmt" "os" "syscall" ) func main() { fi, err := os.Stat("filename") if err != nil { fmt.Println(err) return } // Retrieve the underlying system data structure nlink := uint64(0) if sys := fi.Sys(); sys != nil { if stat, ok := sys.(*syscall.Stat_t); ok { // Extract the link count from the underlying data nlink = uint64(stat.Nlink) } } // Print the link count fmt.Println(nlink) }</code>
Dans cet exemple, la fonction os.Stat() est utilisée pour obtenir un objet os.FileInfo pour le fichier spécifié par "filename". La méthode Sys() de l'objet FileInfo est invoquée pour accéder à la structure *syscall.Stat_t sous-jacente. Le champ Nlink de cette structure contient le nombre de liens pour le fichier.
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!