为什么 Linux 不让我使用 /dev/dsp?

为什么 Linux 不让我使用 /dev/dsp?

我正在阅读一本 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.

或者只是坚持将数据传输到aplaypaplay

答案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

相关内容