为什么 Linux 不让我玩 /dev/dsp?

Kor*_*era 15 devices linux-mint

我正在阅读一本 Linux 教科书,它告诉我有关设备的信息。它说如果我将适当的输出发送到/dev/dsp,那么它会播放声音。示例是cat file.wav > /dev/dsp,其中 file.wav 只是任何 .wav 文件。

当我这样做时,我的许可被拒绝。如果我用 sudo 运行它,我仍然会被拒绝。如果我su首先,没有声音播放。

为什么我的权限被拒绝sudo?为什么即使使用 也没有声音播放su

Ign*_*ams 17

/dev/dsp是 OSS 的一部分,它在……很长一段时间内都不是 Linux 内核的一部分。它早已被 ALSA 所取代,后者使用不同的设备、不同的程序和不同的 API。

不过有一个仿真层模块。如果可用,则加载该snd-pcm-oss模块将使您能够将 PCM 设备用于 OSS,例如/dev/dsp.

或者只是坚持将数据传递给aplaypaplay代替。

  • `sudo modprobe snd-pcm-oss` 在我的 ubuntu 上工作以加载该模块。我从中得到了一个 `/dev/dsp1` 和一个 `/dev/dsp2`。 (2认同)

Gre*_*ill 12

如果我用 sudo 运行它,我仍然会被拒绝。

通过此语句,听起来您正在尝试以下命令:

sudo cat file.wav > /dev/dsp
Run Code Online (Sandbox Code Playgroud)

您继续获得“权限被拒绝”的原因是您的 shell运行命令(即)之前首先尝试打开/dev/dsp设备进行输出。要让 shell 以 root 权限打开重定向,您必须执行以下操作:sudo

sudo sh -c 'cat file.wav > /dev/dsp'
Run Code Online (Sandbox Code Playgroud)


小智 9

如上所述,过时的书。
因此,为了使示例适用于更现代的 linux,它说的是

cat music.wav > /dev/dsp
Run Code Online (Sandbox Code Playgroud)

将其更改为:

cat music.wav | aplay
Run Code Online (Sandbox Code Playgroud)

您刚刚完成了第一次代码移植!赢!随意发送本书作者补丁。:-)