我正在阅读一本 Linux 教科书,它告诉我有关设备的信息。它说如果我将适当的输出发送到/dev/dsp
,那么它会播放声音。例如cat file.wav > /dev/dsp
,其中 file.wav 是任何 .wav 文件。
当我这样做时,我的许可被拒绝。如果我用 sudo 运行它,我仍然会被拒绝。如果我su
先,就不会播放任何声音。
为什么我的许可被拒绝sudo
?为什么即使使用也没有声音su
?
答案1
/dev/dsp
是 OSS 的一部分,而 OSS 已经很长时间没有成为 Linux 内核的一部分了。它早已被 ALSA 取代,ALSA 使用不同的设备、不同的程序和不同的 API。
不过有一个仿真层模块。如果可用,则加载该snd-pcm-oss
模块将使您能够将 PCM 设备用于 OSS,例如/dev/dsp
.
或者只是坚持将数据传输到aplay
或paplay
。
答案2
如果我用 sudo 运行它,我仍然会被拒绝。
通过这个声明,听起来您正在尝试如下命令:
sudo cat file.wav > /dev/dsp
您继续收到“权限被拒绝”的原因是您的 shell第一的尝试打开/dev/dsp
设备进行输出,前运行命令(即sudo
)。要让 shell 以 root 权限打开重定向,您必须执行以下操作:
sudo sh -c 'cat file.wav > /dev/dsp'
答案3
正如所指出的,过时的书。
因此,为了使这些示例适用于更现代的 Linux,它说的是类似的内容
cat music.wav > /dev/dsp
将其更改为:
cat music.wav | aplay
# or
aplay music.wav