![Unix/Mac [bash/c api]: определить, указывает ли заданный путь на файл на съемном устройстве](https://rvso.com/image/1271995/Unix%2FMac%20%5Bbash%2Fc%20api%5D%3A%20%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B8%D1%82%D1%8C%2C%20%D1%83%D0%BA%D0%B0%D0%B7%D1%8B%D0%B2%D0%B0%D0%B5%D1%82%20%D0%BB%D0%B8%20%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9%20%D0%BF%D1%83%D1%82%D1%8C%20%D0%BD%D0%B0%20%D1%84%D0%B0%D0%B9%D0%BB%20%D0%BD%D0%B0%20%D1%81%D1%8A%D0%B5%D0%BC%D0%BD%D0%BE%D0%BC%20%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%B5.png)
Есть ли команда *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
вывод.