Unix/Mac [bash/c api]: 指定されたパスがリムーバブルデバイス上のファイルを指しているかどうかを検出する

Unix/Mac [bash/c api]: 指定されたパスがリムーバブルデバイス上のファイルを指しているかどうかを検出する

ファイルへのパス (マウント、シンボリックリンクなどを解決) を指定してストレージ デバイスの種類を判別する *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の出力をスクレイピングすることができます。

関連情報