GNU/Linux >> Linux Esercitazione >  >> Linux

Qual è il modo migliore per determinare che due percorsi di file si riferiscono allo stesso oggetto file?

Potresti dare un'occhiata al Boost.Filesystem biblioteca. Nello specifico, esiste un metodo equivalent che sembra fare esattamente quello che stai cercando:

using namespace boost::filesystem;

path p("/path/to/file/one");
path q("/sym_link/to/one");
assert(equivalent(p, q));

Libreria di filesystem

Dal C++17 puoi usare lo standard <filesystem> biblioteca. La funzione che stai cercando è equivalent , sotto lo spazio dei nomi std::filesystem :

bool std::filesystem::equivalent(const std::filesystem::path& p1, const filesystem::path& p2);

Per riassumere dalla documentazione:questa funzione accetta due percorsi come parametri e restituisce true se fanno riferimento allo stesso file o directory, false in caso contrario. C'è anche un noexcept overload che accetta un terzo parametro:un std::error_code in cui salvare ogni possibile errore.

Per ulteriori informazioni dai un'occhiata alla mia risposta completa a un'altra domanda sull'overflow dello stack.


Linux
  1. Qual è il modo corretto di usare inotify?

  2. Quali sono le differenze tra grep, awk e sed?

  3. Qual è il modo migliore per gestire le condizioni di memoria insufficiente in Java?

  4. Qual è il modo più veloce per combinare due o più file in Linux?

  5. Qual è il modo migliore per imparare SELinux?

Quali sono gli usi legittimi del comando `touch`?

come posso differenziare due sezioni dello stesso file?

È garantito che due sottodirectory con la stessa radice si trovino sullo stesso file system montato?

Cos'è il file system NSFS?

Qual è il modo migliore per verificare se un volume è montato in uno script Bash?

Qual è il modo migliore per ottenere informazioni sulle unità attualmente non montate?