7

あなたが私を助けてくれることを願っています:私はデバイスが取り外し可能かどうかを判断しようとしています、私が持っているのはデバイス名(/ dev / sdc)だけです。実際、このファイルのフルパスによって、リムーバブルメディアまたはローカルディスク上のファイルがいつになるかを判断する必要があります。

current-> fs-> pwdで検索しようとしました が、ここで見つけたのはフラグのセットだけです:* current-> fs-> pwd.mnt-> mnt_sb-> s_bdev-> bd_disk-> flags *ここで、GENHD_FL_REMOVABLEはリムーバブルデバイス用に設定されています

しかし、私は常に同じフラグを設定します(私が理解しているように、s_bdevは常に同じデバイス(/ dev / sda)を指します)。

だから今私はmtabを解析することによって私のファイルを含むデバイス名(/ dev / sdc)を取得しますが、それでもそれを見つけることができないか、それを削除できるかどうか。

デバイス名でblock_device構造を取得する方法はありますか?(たとえば、「ファイル」構造は、fd = open( "name")fl = fged(fd)を呼び出すことで取得できます。ここで、flは「ファイル」構造を指します)

4

2 に答える 2

2

class_dev_iter_initとを使用して、ブロックデバイスを反復処理できますclass_dev_iter_next。使用法については、のコードを参照してくださいblock/genhd.c blk_lookup_devt

デバイスdev_to_diskを入手したら、を使用してstruct gendisk *、リムーバブルフラグを確認できます。

于 2011-10-02T11:19:39.783 に答える
1

/ sys / block / dev-name / removeableを読み取ります。これは、デバイスがリムーバブルの場合は1、そうでない場合は0が含まれている必要があるためです。(dev-name =デバイスの名前:sda、hda、fd0、...)

于 2011-10-02T11:07:06.147 に答える