0

我需要在 Linux 上用 C 语言编写函数来访问所有挂载的 CDROM 并执行一些操作。
我可以在 BSD 上使用

count = getmntinfo(&buf, 0);

并在所有设备上循环并检查

buf[i].f_type == 17

有什么方法可以在 Linux 上做同样的事情吗?

4

1 回答 1

2

最好的方法可能是解析 /proc/mounts。它看起来与 /etc/mtab 相同,但这实际上不是磁盘文件,它是内核接口,您应该使用低级文件描述符函数 - 即 read(),而不是 fread(),fscanf(等

还有libudev,但我认为解决方案会更加复杂:

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

同样,几乎所有挂载 cd 的 linux 系统也将使用 udev,尽管我认为这对于 proc 来说不太正确。

/sys/dev 包含有关每个已安装设备的更深入的信息,这些信息可能使您能够做出决定。libudev 使用这些路径。

真的,为了尊重用户,我认为你应该尝试并坚持使用传统的符号链接,如 /dev/dvdrw 等,而不是尝试在非常规的地方寻找东西。这就是这些链接的用途。它还使您的工作变得更加轻松。

于 2012-04-29T12:54:48.607 回答