![Unix/Mac [bash/c api]: 指定されたパスがリムーバブルデバイス上のファイルを指しているかどうかを検出する](https://rvso.com/image/1271995/Unix%2FMac%20%5Bbash%2Fc%20api%5D%3A%20%E6%8C%87%E5%AE%9A%E3%81%95%E3%82%8C%E3%81%9F%E3%83%91%E3%82%B9%E3%81%8C%E3%83%AA%E3%83%A0%E3%83%BC%E3%83%90%E3%83%96%E3%83%AB%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E4%B8%8A%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E6%8C%87%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8B%E3%82%92%E6%A4%9C%E5%87%BA%E3%81%99%E3%82%8B.png)
ファイルへのパス (マウント、シンボリックリンクなどを解決) を指定してストレージ デバイスの種類を判別する *nix コマンドまたは C API はありますか? ファイルがリムーバブル デバイス上にあるかどうかを確認する必要があります。
答え1
find がストレージデバイスを明らかにするのに十分かどうかはわかりません。
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」です
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
の出力をスクレイピングすることができます。