gpt4 book ai didi

c - Linux 从 C 代码中找到所有挂载的 CDROM

转载 作者:太空宇宙 更新时间:2023-11-04 09:51:40 24 4
gpt4 key购买 nike

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

count = getmntinfo(&buf, 0);

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

buf[i].f_type == 17

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

最佳答案

最好的方法可能是解析/proc/mounts。它看起来与/etc/mtab 相同,但这实际上不是一个磁盘文件,它是一个内核接口(interface),您应该对它使用低级文件描述符函数——即 read(),而不是 fread()、fscanf( ), 等等。几乎所有挂载 cdrom 的 linux 系统也将有一个可用的 proc,并且其中大部分(包括挂载)不需要读取权限。

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

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

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

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

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

关于c - Linux 从 C 代码中找到所有挂载的 CDROM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10372182/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com