c++ - 用于控制光学媒体的 linux 应用程序

标签 c++ linux bash signals hardware

我想要一个用于 Linux 的图形应用程序,它可以显示 CD/DVD/蓝光驱动器的内容并允许播放或弹出,我希望解决方案是通用的,这样我就可以将它捐赠给 Linux Mint,即任何驱动器类型和任意数量的驱动器。在我的系统中,我有三个 DVD 驱动器和一个蓝光驱动器。

我想使用终端窗口内的对话框函数在 bash 中编写它,但我需要让对话框随即显示,因此,我需要一个中断来在驱动器打开或关闭时发出信号——我可以发出什么信号陷阱?此外,如何包含根据媒体类型选择播放媒体的程序的逻辑。

此外,我是否应该考虑用 java、python、C++ 或其他语言编写它,如果是,如何获取硬件信息(例如驱动器的数量和容量,以及驱动器中光学介质的类型和标题)?

最佳答案

忽略“我想把它捐赠给 Linux Mint”的一面,我认为这有点自命不凡,Linux 中有一个 eject 实用程序。

源代码可以在这里找到: https://git.kernel.org/cgit/utils/util-linux/util-linux.git/tree/sys-utils/eject.c

在该代码中,还有用于检测驱动器是否打开、关闭、没有磁盘等的代码。

CD 或 DVD 播放完全是另一回事。编写一个音频播放器并不完全是微不足道的(即使在简单的 PCM 编码的简单情况下,显然 MP3 也稍微复杂一些),而视频播放器远不止于此。

要“选择一个程序”,您必须知道可用播放器的名称,并且,如果您想花哨的话,请检查实际安装了哪些播放器。除了在你的代码中有一个玩家列表(需要更新)之外,我不知道有什么真正聪明的方法可以实现这一点。事实上,我知道当您想要编辑镜头时照片查看器 geeqie 就是这样工作的:它有一个“已知编辑器”列表,它会扫描 PATH 以查找可用的编辑器。

关于c++ - 用于控制光学媒体的 linux 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33073074/

相关文章:

c++ - 以类型安全的方式将指针转换为指针

linux - 在 bash 中提取部分文件名

linux - 设置 (Linux) Hadoop 集群

linux - bind/named.conf 配置问题 : append to primary zone

Linux 从串行端口读取 - fork 解决方法

c++ - C++ 中的 3 维数组

c++ - 将 CV_32FC1 更改为 CV_64FC1 结果不正确的数据转换

c++ - 为 64 位 Linux 的特定 arm 目标交叉编译 Qt

linux - Bash - 从 ls -la 输出中过滤掉目录,但保留目录 "."

python - 如何使用 Python 启动交互式 Docker 容器?