¿Por qué Linux no me deja jugar con / dev / dsp?

12

Estoy trabajando en un libro de texto de Linux, y me cuenta sobre los dispositivos. Dice que si envío la salida adecuada a /dev/dsp, reproducirá un sonido. El ejemplo es cat file.wav > /dev/dsp, donde file.wav es cualquier archivo .wav.

Cuando hago esto, me deniegan el permiso. Si ejecuto esto con sudo, todavía recibo el permiso denegado. Si suprimero, no suena ningún sonido.

¿Por qué me niegan el permiso sudo? ¿Por qué no suena el sonido incluso con su?

Korgan Rivera
fuente
1
Asegúrese de que su usuario esté en el audiogrupo.
Carl Groner
Es posible que también deba asegurarse de que su archivo wav sea audio sin formato; no todos los archivos .wav son sin formato.
Drake Clarris
@DrakeClarris, eso provocaría la salida de ruido, no un error de permiso denegado.
CJM
@cjm Estaba pensando más en el silencio cuando jugaba usando su
Drake Clarris

Respuestas:

14

/dev/dspes parte de OSS, que no ha sido parte del kernel de Linux en ... mucho tiempo. Ha sido suplantado por ALSA, que utiliza diferentes dispositivos, diferentes programas y una API diferente.

Sin embargo, hay un módulo de capa de emulación. Si está disponible, cargar el snd-pcm-ossmódulo le permitirá utilizar los dispositivos PCM para OSS como /dev/dsp.

O simplemente quédese con los datos de tubería aplayo en su paplaylugar.

Ignacio Vazquez-Abrams
fuente
2
sudo modprobe snd-pcm-ossfunciona en mi ubuntu para cargar ese módulo. Me sale una /dev/dsp1y una /dev/dsp2de esto.
Veda
9

Si ejecuto esto con sudo, todavía recibo el permiso denegado.

Según esta declaración, parece que está intentando un comando como:

sudo cat file.wav > /dev/dsp

La razón por la que continúa obteniendo "permiso denegado" es que su shell primero intenta abrir el /dev/dspdispositivo para la salida, antes de ejecutar el comando (que es sudo). Para que el shell abra la redirección con privilegios de root, debe hacer algo como:

sudo sh -c 'cat file.wav > /dev/dsp'
Greg Hewgill
fuente
6

Libro desactualizado, como se señaló.
Para que los ejemplos funcionen con Linux más moderno, donde dice algo como

cat music.wav > /dev/dsp

cámbielo a:

cat music.wav | aplay

¡Y acabas de hacer tu primera transferencia de código! ¡Ganar! No dude en enviar los parches de autor del libro. :-)

Hal
fuente