我需要在 Linux 上用 C 语言编写函数来访问所有挂载的 CDROM 并执行一些操作。
我可以在 BSD 上使用
count = getmntinfo(&buf, 0);
并在所有设备上循环并检查
buf[i].f_type == 17
有什么方法可以在 Linux 上做同样的事情吗?
我需要在 Linux 上用 C 语言编写函数来访问所有挂载的 CDROM 并执行一些操作。
我可以在 BSD 上使用
count = getmntinfo(&buf, 0);
并在所有设备上循环并检查
buf[i].f_type == 17
有什么方法可以在 Linux 上做同样的事情吗?
最好的方法可能是解析 /proc/mounts。它看起来与 /etc/mtab 相同,但这实际上不是磁盘文件,它是内核接口,您应该使用低级文件描述符函数 - 即 read(),而不是 fread(),fscanf(等
还有libudev,但我认为解决方案会更加复杂:
http://www.freedesktop.org/software/systemd/libudev/
同样,几乎所有挂载 cd 的 linux 系统也将使用 udev,尽管我认为这对于 proc 来说不太正确。
/sys/dev 包含有关每个已安装设备的更深入的信息,这些信息可能使您能够做出决定。libudev 使用这些路径。
真的,为了尊重用户,我认为你应该尝试并坚持使用传统的符号链接,如 /dev/dvdrw 等,而不是尝试在非常规的地方寻找东西。这就是这些链接的用途。它还使您的工作变得更加轻松。