Go でのファイルへのハード リンクの数の決定
Go では、FileInfo インターフェイスは stat( ) システムコール。このインターフェイスには、ファイル名、サイズ、変更時刻、ファイルのアクセス許可などの詳細が含まれていますが、特定のファイルを指すハード リンクの数に直接アクセスすることはできません。
基になるデータを介したリンク数へのアクセスSource
リンク数を取得するには、FileInfo インターフェイスの Sys() メソッドを利用できます。このメソッドは、基礎となるシステム固有のデータ構造へのアクセスを提供します。このデータ構造には、FileInfo によって直接公開されるもの以外の追加情報が含まれる場合があります。
特に、Unix ベースのシステムの場合、Sys() メソッドはポインタを返します。 *syscall.Stat_t タイプ。Nlink という名前のフィールドが含まれます。このフィールドは、ファイルへのハード リンクの数を表します。
実装例
これは、ファイルのハード リンク数を取得する方法を示す Go での実装例です。 :
<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>
この例では、os.Stat() 関数を使用して、「filename」で指定されたファイルの os.FileInfo オブジェクトを取得します。 FileInfo オブジェクトの Sys() メソッドが呼び出され、基礎となる *syscall.Stat_t 構造体にアクセスします。この構造体の Nlink フィールドには、ファイルのリンク数が含まれます。
以上がGo でファイルへのハード リンクの数を確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。