Ich habe ein Programm, das aus einer Datei liest und in eine Datei schreibt. Ich möchte verhindern, dass der Benutzer für beide die gleiche Datei angibt (aus offensichtlichen Gründen). Nehmen wir an, der erste Pfad ist in char* path1
und der zweite Pfad in char* path2
. kann ich fopen()
beide Pfade,% fileno()
aufrufen und die gleiche Nummer bekommen?
Um es klarer zu erklären:
%Vor% Ich möchte keine Dateinamen vergleichen, weil man das mit Pfaden wie /asdf/./asdf
oder mit Symlinks leicht umgehen könnte. Letztendlich möchte ich meine Ausgabe nicht in die Datei schreiben, von der ich gerade lese (dies könnte ernsthafte Probleme verursachen).
Ja - Vergleichen Sie die Geräte-ID und den Inode der Datei. In der <sys/stat.h>
-Spezifikation :
Die Felder st_ino und st_dev identifizieren die Datei innerhalb des Systems eindeutig.
Verwenden Sie
%Vor%Tags und Links c