私のOSはLinuxです。私はCでプログラムします。ソフトリンクを認識するためにlstat()を使うことができます。つまり、S_ISLNK(st.st_mode)を使用することができます。しかし、リンクがハードリンクであることを私はどのように認識できますか?リンクがハードリンクの場合、通常のファイルと見なされます。しかし、私はまた、通常のファイルとハードリンクを区別したい。このケースを処理する方法はありますか?ハードリンクかどうかを判断するためにlstat()を使用する方法
0
A
答えて
2
しかし、リンクがハードリンクであることをどのように認識できますか?
できません。
"ハードリンク"は実際には特別なものではありません。これは、ディレクトリエントリと同じディスク上の同じデータを指し示すディレクトリエントリです。 ハードリンクを確実に識別するには、すべてのファイルシステム上のパスをinodeにマップし、どのファイルが同じ値を指しているのかを確認します。
0
struct statには、ハードリンク数に対するst_nlinkメンバーがあります。それは> 1です。実際のファイルコンテンツへのハードリンクの1つにファイルが記述されています。ここで
struct stat {
dev_t st_dev; /* ID of device containing file */
ino_t st_ino; /* inode number */
mode_t st_mode; /* protection */
nlink_t st_nlink; /* number of hard links */
uid_t st_uid; /* user ID of owner */
gid_t st_gid; /* group ID of owner */
dev_t st_rdev; /* device ID (if special file) */
off_t st_size; /* total size, in bytes */
blksize_t st_blksize; /* blocksize for file system I/O */
blkcnt_t st_blocks; /* number of 512B blocks allocated */
time_t st_atime; /* time of last access */
time_t st_mtime; /* time of last modification */
time_t st_ctime; /* time of last status change */
};
は、サンプルプログラムでは、次のとおりです。
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
int main()
{
struct stat buf = {0};
lstat("origfile", &buf);
printf("number of hard links for origfile: %d\n", buf.st_nlink);
}
出力:
$ touch origfile
$ ./a.out
number of hard links for origfile: 1
$ ln origfile hardlink1
$ ./a.out
number of hard links for origfile: 2
$ ln origfile hardlink2
$ ./a.out
number of hard links for origfile: 3
関連する問題
- 1. SharePointを使用しているかどうかを判断する方法
- 2. コマンドプロンプトを使用するかどうかを判断するバッチファイル
- 3. ビューが初めてレンダリングされたかどうかを判断する方法
- 4. location.hashが戻るボタンかどうかを判断する方法
- 5. JNI/JVMTIの使用 - jfieldIDが静的かどうかを判断する方法
- 6. BSTかどうかを判断する
- 7. Oracle:列が "ブール値"かどうかを判断する方法
- 8. パスワードが必要かどうかを判断する方法
- 9. あなたがBuddypressアクティビティストリームにいるかどうかを判断する方法
- 10. 何かがクリップボードにコピーされたかどうかを判断する方法
- 11. URLがHTTPかHTTPSかを判断するためにBashを使用する
- 12. TensorFlow:トレーニングデータセットをバッチに分割するかどうかを判断する方法
- 13. レール:URLにSSLを使用するかどうかを判断する()CSS
- 14. POSTが成功するかどうかを判断するためのRESTfulな方法はありますか?
- 15. オブジェクトが移動を停止したかどうかを判断する方法
- 16. 次の要素に移動するかどうかを判断する方法
- 17. 地図の使い方!数が範囲内にあるかどうかを判断するためにルビーで
- 18. 私の乗客がApacheまたはnginxを使用しているかどうかを判断する方法
- 19. HttpClientを使用してHttpResponseMessageがキャッシュから実行されたかどうかを判断する方法
- 20. C#HttpWebRequest - HTTP 301が発生したかどうかを判断する方法
- 21. MongoDBでフルコレクションスキャンが行われたかどうかを判断する方法
- 22. Lineが矩形を通過するかどうかを判断する方法
- 23. Uberがエリアをサービスするかどうかを判断する方法は?
- 24. Windowsフォームのテキストボックスにフォーカスがあるかどうかを判断する方法
- 25. コントロールがフォームCの外にあるかどうかを判断する方法#
- 26. テキストがフレームに収まるかどうかを判断する方法は?
- 27. ネイティブJavaScriptオブジェクトにプロパティ/メソッドがあるかどうかを判断する方法
- 28. ポイントがQuad2DCurveにあるかどうかを判断する方法
- 29. JPanelでコンポーネントが見つかったかどうかを判断するための迅速な方法
- 30. サードパーティAPIを使用してイベントが完了したかどうかを判断する方法 - C#
確かにそれはソフトリンクではない場合、それはハードリンクすべきですか? –
通常のファイル*は*ハードリンクです。 – wildplasser