我有一个从文件读取并写入文件的程序。我想阻止用户为两者指定相同的文件(出于显而易见的原因)。假设第一条路径在char* path1
,第二条路径在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
或使用符号链接很容易击败它。最终,我不想将我的输出写入我正在读取的文件中(可能会导致严重的问题)。