マウントされているすべてのCDROMにアクセスして何らかのアクションを実行するLinux上のC言語で関数を書く必要があります。私はLinuxはCコードからすべてのマウントされたCDROMを見つける
count = getmntinfo(&buf, 0);
を使用して、すべてのデバイス上でループして
buf[i].f_type == 17
をチェックBSDでそれを行うことができます
は、Linux上で同じことを行うにはどのような方法か?
マウントされているすべてのCDROMにアクセスして何らかのアクションを実行するLinux上のC言語で関数を書く必要があります。私はLinuxはCコードからすべてのマウントされたCDROMを見つける
count = getmntinfo(&buf, 0);
を使用して、すべてのデバイス上でループして
buf[i].f_type == 17
をチェックBSDでそれを行うことができます
は、Linux上で同じことを行うにはどのような方法か?
おそらく、最も良い方法は/ proc/mountsを解析することです。これは/ etc/mtabと同じように見えますが、実際にはディスク上のファイルではなく、カーネルインターフェースです。 )などです。実質的には、cdromをマウントするすべてのLinuxシステムにはprocがあり、その多く(マウントを含む)には特権を必要としません。
libudevが、私は解決策は、多くの複雑になります考えるもあります:
再びhttp://www.freedesktop.org/software/systemd/libudev/
、私は思うものの、事実上のCDをマウントするすべてのLinuxシステムでも、udevを使用しますが、これはprocのためになるだろう少し不実です。
/sys/devには、マウントされた各デバイスに関する詳細情報が含まれています。 libudevはこれらのパスを使います。
本当にユーザーを尊重するために、私は/ dev/dvdrwなどの従来のシンボリックリンクを試してみるべきだと思います。それはそれらのリンクのためのものです。また、仕事をはるかに簡単にします。
また、デバイスがCDROMであるかどうかを確認する方法はありますか? –
ファイルシステムが 'udf'か' iso9660'であることを確認しますか?それが私の心に来る唯一のものです。 – Artefact2
また、/ devの名前はhttp://ftp.osuosl.org/pub/linux/docs/device-list/devices-2.6+.txtというシステムに従いますが、これはあくまでも一例ではありません。 udevは "devtype"という文字列を持っているようですが、/ proc/mounts(つまり、parse/proc/mountsと合理的なcantidatesを試してください)と一緒に調べてみてください。 libudevは/ sys/devパスを使います。上記の私の編集を参照してください。 – delicateLatticeworkFever
CD-ROMの定義は何ですか? DVD-ROMまたはBD-ROMはカウントされますか?上のいずれかのマウントされたISOイメージはどうでしょうか? – NPE
すべてのデバイス。 –