ファイルと実際のファイルへのリンクがあります。両方が同じ物理的な場所を参照している場合、どうすれば検出できますか?Qtで2つのファイルエントリが同じ物理ファイルシステムを参照しているかどうかを検出する方法はありますか?
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
bool isSameFileSystem(QString path1, QString path2)
{
struct stat stat1, stat2;
QFileInfo fi1(path1);
QFileInfo fi2(path2);
stat(fi1.absoluteDir().absolutePath().toUtf8().constData(), &stat1);
stat(fi2.absoluteDir().absolutePath().toUtf8().constData(), &stat2);
return stat1.st_dev == stat2.st_dev;
}
重複したコードを別の機能に移動することもできます。 – vahancho
私はこれが信頼できる解決策ではないと思います。 'isSymLink'のドキュメントでは、実際のシンボリックなNTFSリンクは明示的に言及されていません。そして、たとえシンボリックなNTFSリンクがハードリンクやジャンクション(マウントされたディレクトリ)について扱われても? – bkausbk
さて、http://doc.qt.io/qt-5/qfileinfo.html#isSymLinkによると、Windowsでは.lnkファイルが読み込まれます。 – AlexanderVX