Cómo comprobar en el código C si un directorio en el sistema de archivos NFS?
Pregunta
En mi C/C++ programa me gustaría comprobar si los datos en el directorio especificado por el usuario reside en el sistema de archivos NFS.La verificación es necesaria porque la latencia de procesamiento de datos y el ancho de banda es peor para el NFS remoto directorio.Me gustaría emitir una advertencia al usuario en caso de que el directorio de datos es NFS.
¿Cómo puedo hacer eso?Me imaginé que hay stat() la llamada que debe ser capaz de ayudarme, pero los detalles no están claros.
Estoy en Linux.
Solución
Usted debe utilizar statfs(2)
y de verificación f_type
.
#include <sys/statfs.h>
struct statfs foo;
if (statfs ("/foo/bar", &foo)) {
/* error handling */
}
if (foo.f_type == NFS_SUPER_MAGIC) {
/* nfs warning */
}
Estoy de acuerdo con Basile en la utilidad de hacerlo.
Otros consejos
Podría usar el estados syscall para obtener información sobre el sistema de archivos de una ruta dada (de algún archivo dentro de ese sistema de archivos).
La llamada del sistema que está buscando es statfs
.Dado algún camino, le dará información sobre el sistema de archivos en el que existe la ruta, incluido qué sistema de archivos está usando.