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


12

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

当我这样做时,我会被拒绝权限。如果我使用sudo运行它,我仍然会被拒绝权限。如果是我su先,没有声音播放。

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


1
确保您的用户在audio组中。
卡尔·格罗纳

您可能还需要确保您的wav文件是原始音频-并非所有.wav文件都是原始文件。
德雷克·克拉里斯(Dreak Clarris)2013年

@DrakeClarris,这将导致输出噪音,而不是权限被拒绝的错误。
cjm 2013年

@cjm当我使用su演奏时,我在想更多的沉默
Drake Clarris 2013年

Answers:


14

/dev/dsp是OSS的一部分,OSS在很长一段时间内都不是Linux内核的一部分。长期以来,ALSA一直使用它来代替它,后者使用不同的设备,不同的程序和不同的API。

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

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


2
sudo modprobe snd-pcm-oss在我的Ubuntu上工作以加载该模块。我得到一个/dev/dsp1和一个/dev/dsp2
Veda

9

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

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

sudo cat file.wav > /dev/dsp

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

sudo sh -c 'cat file.wav > /dev/dsp'

6

如上所述,已过时的书。
因此,为了使示例与更现代的linux一起使用,它表示类似

cat music.wav > /dev/dsp

更改为:

cat music.wav | aplay

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.