ファイルから読み取り、ファイルに書き込むプログラムがあります。ユーザーが両方に同じファイルを指定できないようにしたい (明らかな理由から)。最初のパスが にchar* path1
あり、2 番目のパスが にあるとしchar* path2
ます。fopen()
両方のパスに電話fileno()
をかけ、同じ番号を取得できますか?
より明確に説明するには:
char* path1 = "/asdf"
char* path2 = "/asdf"
FILE* f1 = fopen(path1, "r");
FILE* f2 = fopen(path2, "w");
int fd1 = fileno(f1);
int fd2 = fileno(f2);
if(fd1 == fd2) {
printf("These are the same file, you really shouldn't do this\n");
}
編集:
ファイル名を比較したくありません。パスのようなもの/asdf/./asdf
やシンボリックリンクを使用することで、ファイル名を簡単に無効にすることができるからです。最終的に、読み取り元のファイルに出力を書き込みたくありません (重大な問題が発生する可能性があります)。