Mengapa Linux tidak mengizinkan saya bermain dengan / dev / dsp?

12

Saya sedang mengerjakan buku teks Linux, dan ini bercerita tentang perangkat. Dikatakan bahwa jika saya mengirim output yang sesuai /dev/dsp, maka itu akan memainkan suara. Contohnya adalah cat file.wav > /dev/dsp, di mana file.wav adalah sembarang file .wav.

Ketika saya melakukan ini, saya mendapat izin ditolak. Jika saya menjalankan ini dengan sudo saya masih mendapat izin ditolak. Jika saya supertama kali, tidak ada suara yang diputar.

Mengapa saya mendapat izin ditolak sudo? Mengapa tidak ada suara yang diputar su?

Korgan Rivera
sumber
1
Pastikan pengguna Anda ada di audiogrup.
Carl Groner
Anda mungkin juga perlu memastikan bahwa file wav Anda adalah audio mentah - tidak semua file .wav mentah.
Drake Clarris
@DrakeClarris, yang akan menyebabkan noise menjadi output, bukan kesalahan izin ditolak.
cjm
@ cjm Saya lebih memikirkan keheningan saat bermain menggunakan su
Drake Clarris

Jawaban:

14

/dev/dspadalah bagian dari OSS, yang belum menjadi bagian dari kernel Linux di ... waktu yang sangat lama. Sudah lama digantikan oleh ALSA, yang menggunakan perangkat yang berbeda, program yang berbeda, dan API yang berbeda.

Ada modul lapisan emulasi. Jika tersedia maka memuat snd-pcm-ossmodul akan memungkinkan Anda untuk menggunakan perangkat PCM untuk OSS seperti /dev/dsp.

Atau hanya menempelkan data perpipaan ke aplayatau paplaysebagai gantinya.

Ignacio Vazquez-Abrams
sumber
2
sudo modprobe snd-pcm-ossberfungsi di ubuntu saya untuk memuat modul itu. Saya mendapat /dev/dsp1dan /dev/dsp2keluar dari ini.
Veda
9

Jika saya menjalankan ini dengan sudo saya masih mendapat izin ditolak.

Dengan pernyataan ini, sepertinya Anda mencoba perintah seperti:

sudo cat file.wav > /dev/dsp

Alasan Anda terus mendapatkan "izin ditolak" adalah bahwa shell Anda terlebih dahulu mencoba membuka /dev/dspperangkat untuk keluaran, sebelum menjalankan perintah (yang sudo). Agar shell membuka pengalihan dengan hak akses root, Anda harus melakukan sesuatu seperti:

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

Buku kedaluwarsa, seperti yang disebutkan.
Jadi untuk membuat contoh bekerja dengan linux yang lebih modern, di mana ia mengatakan sesuatu seperti

cat music.wav > /dev/dsp

ubah ke:

cat music.wav | aplay

Dan Anda baru saja melakukan porting kode pertama Anda! Menang! Jangan ragu untuk mengirim tambalan penulis buku. :-)

Hal
sumber