0

Linux上でマウントされたすべてのCDROMにアクセスし、何らかのアクションを実行する関数をC言語で記述する必要があります。
BSDでそれを行うことができます

count = getmntinfo(&buf, 0);

そして、すべてのデバイスでループしてチェックします

buf[i].f_type == 17

Linuxで同じことをする方法はありますか?

4

1 に答える 1

2

最善の方法は、おそらく/ proc/mountsを解析することです。/ etc / mtabと同じように見えますが、これは実際にはディスク上のファイルではなく、カーネルインターフェイスであるため、低レベルのファイル記述子関数を使用する必要があります。つまり、fread()ではなくread()、fscanf( )など。cdromをマウントする実質的にすべてのLinuxシステムでもprocを使用でき、その多く(マウントを含む)は読み取りに特権を必要としません。

libudevもありますが、解決策はもっと複雑になると思います。

http://www.freedesktop.org/software/systemd/libudev/

繰り返しになりますが、CDをマウントする事実上すべてのLinuxシステムもudevを使用しますが、これはprocの場合よりも少し真実ではないと思います。

/ sys / devには、マウントされた各デバイスに関するより詳細な情報が含まれており、決定を下すことができます。libudevはそれらのパスを使用します。

本当に、ユーザーを尊重するために、/ dev / dvdrwなどの従来のシンボリックリンクに固執することを試みるべきであり、型にはまらない場所で物事を見つけることをあまり試みないべきだと思います。それがそれらのリンクの目的です。それはまたあなたの仕事をはるかに簡単にします。

于 2012-04-29T12:54:48.607 に答える