Unix / Mac [bash / c api]: detecta si una ruta determinada apunta a un archivo en un dispositivo extraíble
0
¿Existe un comando * nix o C api que indique el tipo de dispositivo de almacenamiento que recibe la ruta al archivo (resolución de montajes, enlaces simbólicos, etc.)? Necesito averiguar si el archivo se encuentra en un dispositivo extraíble.
Dispositivo: es un entero de 16 bits. Los 8 bits superiores son el dispositivo principal y los 8 bits inferiores son el dispositivo menor. Estos pueden compararse con los números mayor / menor en los nodos en / dev para encontrar el nombre del dispositivo en el que se encuentra el archivo.
Majenko
@Matt: en Linux, el número mayoritario es de 12 bits y el menor es de 20 bits.
grawity
@grawity No en mi Linux no lo es
Majenko
@Matt: bueno, acabo de hacerlo mknod foo c 4095 1048575 en un kernel del año pasado (2.6.32-linode). No se puede hablar por personas atrapadas con 2.4, por supuesto.
grawity
@grawity que bien puede ser, pero la entrada Dispositivo: en stat todavía es de 16 bits. stat [0] & gt; & gt; 8 = mayor. stat [0] & amp; 0xFF = menor. De lo contrario, el dispositivo 2055 (como en el ejemplo anterior) sería mayor 0 menor 2055 ... no es correcto, ¿verdad? Linux puede ser capaz de tener el dispositivo mayor y los menores en partes más grandes, pero no creo que pueda tener un dispositivo de bloqueo sobre 255 menor.
Majenko
1
Algunas implementaciones de * nix pueden tener una herramienta genial, pero no sería demasiado difícil usar la salida de mount (1) para correlacionar un archivo y su sistema de archivos:
mfe@inker:/home/mfe$ mount
...
/media/WINXP_PRO_SP1 on /dev/dsk/c4t0d0s2 read only/nosetuid/nodevices/noglobal/maplcase/joliet/traildot/dev=14c0002 on Thu Apr 7 07:39:29 2011
Dejando a un lado el nombre del montaje, cualquier archivo que encuentre en / media / WINXP_PRO_SP1 debe estar en el DVD-ROM.
Sólo una advertencia: mount(1) La salida está destinada a los humanos. Hacer no analizarlo Utilizar /proc/self/mounts o /proc/self/mountinfo Si la detección se va a poner en un script.
grawity
Ah. No tenemos esa característica en Solaris.
mfe
Todavia hay /etc/mtab, que utiliza el mismo formato que /proc/self/mounts.
grawity
1
@grawity - / etc / mnttab, estoy seguro de que quisiste decir.
mfe
1
Si hal está instalado, podría por ejemplo raspar lshal de salida.
mknod foo c 4095 1048575
en un kernel del año pasado (2.6.32-linode). No se puede hablar por personas atrapadas con 2.4, por supuesto.Algunas implementaciones de * nix pueden tener una herramienta genial, pero no sería demasiado difícil usar la salida de mount (1) para correlacionar un archivo y su sistema de archivos:
Dejando a un lado el nombre del montaje, cualquier archivo que encuentre en / media / WINXP_PRO_SP1 debe estar en el DVD-ROM.
fuente
mount(1)
La salida está destinada a los humanos. Hacer no analizarlo Utilizar/proc/self/mounts
o/proc/self/mountinfo
Si la detección se va a poner en un script./etc/mtab
, que utiliza el mismo formato que/proc/self/mounts
.Si
hal
está instalado, podría por ejemplo rasparlshal
de salida.fuente