Programacion C en linux

Que funcion puedo utilizar para saber si un fichero es local o remoto, es decir, si el fichero esta en el mismo disco duro o pertenece a un dispositivo de red ( nfs o smbfs, ... ).

A ver si alguien me hecha una mano.
hombre no se, supongo que sacando el path del directorio del fichero y miras si esa cadena contiene la subcadena /mnt/ pero claro, esto funciona si todos los remotos están en /mnt/ , es una solucion salchichera pero te podria ayudar a tirar pa alante
así más salchichero todavía sería mirar el /etc/fstab y ver qué tipo de "montaje" se ha hecho en esa particion...


Saludos.
La verdad que asi es complicado.
No se si hay alguna función que te diga el dispositvo
fisico (seria alguna llamada al sistema)
Pero ten en cuenta:
Que si lo montas a mano los discos no aparecen
en el fstab.
para eso tienes el mtab o el comando df (aunque tampoco
te aparecen todos al menos con el df) mira primero
en el mtab

Yo lo que aria es una lista con los puntos de montaje
e irira comparandao

-Y cuidado con los enalces simbolicos

Si algun punto de la ruta es un enlace simbolico te
engañara ej:

/home/harl/dvd => /mnt/hase_d/dvd

Pero los archivos estarian fiscamente fuera de /
Yo pensaba mas en alguna llamada al sistema, pero no he encontrado ninguna de momento. Porque lo de mirar en el fstab y en le mtab es un poco complicado debido a los enlaces como has explicado Hari. Gracias por vuestras respuestas pero me gustaria hacerlo, si existe, de una forma más elegante. A ver si alguien ( me incluyo a mi mismo ) tiene alguna idea genial y encontramos una solucion mas elegante.
Acabao de acordarme si pones
df nombre_de_archivo
te da la info del disco donde esta ese archivo
Tal vez esto sea más practico.

Desgracidamente tambien pica con lo de los enlaces
Con esto podemos obtener el tipo de sistema de archivos del archivo
df -T <archivo>
Si se puede hacer solo podrás hacerlo limpiamente a nivel de VFS. Y hasta donde yo se eso es a nivel del kernel.

Salu2.Ferdy
7 respuestas