Unix/Mac [bash/c api]: определить, указывает ли заданный путь на файл на съемном устройстве

Unix/Mac [bash/c api]: определить, указывает ли заданный путь на файл на съемном устройстве

Есть ли команда *nix или C api, которая определит тип устройства хранения, учитывая путь к файлу (разрешение монтирований, символических ссылок и т. д.)? Мне нужно узнать, находится ли файл на съемном устройстве.

решение1

Я не знаю, достаточно ли найдено, чтобы обнаружить устройство хранения:

find /path/to/your/file.xml -printf "%F"

из страницы руководства:

 %F     Type of the filesystem the file is on; this value can be used for -fstype.

Другая идея — «стат».

stat /home/stefan/.shosts  
  File: `/home/stefan/.shosts'
  Size: 12          Blocks: 8          IO Block: 4096   regular file
Device: 807h/2055d  Inode: 89647       Links: 1
Access: (0600/-rw-------)  Uid: ( 1000/  stefan)   Gid: ( 1000/  stefan)
Access: 2011-04-11 10:24:21.000000000 +0200
Modify: 2011-03-30 14:45:29.000000000 +0200
Change: 2011-03-30 14:46:03.000000000 +0200

Есть строка «Устройство:», но я не знаю, что с этим делать. Может быть, выяснится?

решение2

Некоторые реализации *nix могут иметь классный инструмент, но не составит большого труда использовать вывод mount(1) для сопоставления файла и его файловой системы:

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

Если не брать в расчет подробности в имени монтирования, любой файл, который я нахожу в /media/WINXP_PRO_SP1, должен быть на DVD-ROM.

решение3

Если halустановлен, вы можете, например, скопировать lshalвывод.

Связанный контент