Go でファイルへのハード リンクの数を取得する
Go 標準ライブラリは、 stat() システムコール。ただし、このインターフェイスはファイルへのハード リンクの数を直接公開しません。これは特定のシナリオで役立つ情報です。
ソリューション
Go でファイルへのハード リンクの数を増やすには、FileInfo オブジェクトに関連付けられた基盤となるシステム データにアクセスする必要があります。これは、以下の例に示すように、FileInfo の Sys() メソッドを関連するシステム依存型にキャストすることで実行できます。
<code class="go">package main import ( "fmt" "os" "syscall" ) func main() { fi, err := os.Stat("filename") if err != nil { fmt.Println(err) return } nlink := uint64(0) if sys := fi.Sys(); sys != nil { if stat, ok := sys.(*syscall.Stat_t); ok { nlink = uint64(stat.Nlink) } } fmt.Println(nlink) }</code>
上記の例では、まず、ファイルの FileInfo オブジェクトを取得します。指定されたファイル。次に、Sys() メソッドが nil 以外の値を返すかどうかを確認し、それを syscall パッケージで定義されている *syscall.Stat_t 型にキャストします。 *syscall.Stat_t 構造体の Nlink フィールドには、ファイルへのハード リンクの数が含まれています。
出力例
「」という名前の既存のファイルを使用したサンプル プログラムの実行filename" は次の出力を生成します:
1
これは、ファイルにデフォルト値であるハード リンクが 1 つあることを示します。
したがって、FileInfo に関連付けられた基になるシステム データにアクセスすることによって、オブジェクトを使用すると、Go で特定のファイルへのハード リンクの数を取得できます。
以上がGoでファイルへのハードリンクの数を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。