Linux では、A と B の 2 つのファイル パスがあります。
const char* A = ...;
const char* B = ...;
私は今、open(2)
両方を決定したいのですが...
int fda = open(A, ...);
int fdb = open(B, ...);
...ファイルシステム内の同じファイルに対して 2 つのファイルハンドルを開くことはできますか?
これを判断するために、私は次のことを考えましたstat(2)
:
struct stat
{
dev_t st_dev;
ino_t st_ino;
...
}
(疑似コード) のようなもの:
bool IsSameFile(const char* sA, const char* sB)
{
stat A = stat(sA);
stat B = stat(sB);
return A.st_dev == B.st_dev && A.st_ino == B.st_ino;
}
A と B は同じファイルですが、IsSameFile
false を返す場合はありますか?
A と B が異なるファイルであるがIsSameFile
true を返す場合はありますか?
私がやろうとしていることを行うためのより良い方法はありますか?