Kann ich überprüfen, ob sich zwei FILE * - oder Datei-Deskriptor-Nummern auf dieselbe Datei beziehen?

8

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%

BEARBEITEN:

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).

    
Huckle 19.09.2012, 20:39
quelle

1 Antwort

20

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%     
nneonneo 19.09.2012, 20:54
quelle

Tags und Links