Tại sao Linux không cho tôi chơi với / dev / dsp?


12

Tôi đang làm việc thông qua sách giáo khoa Linux và nó cho tôi biết về các thiết bị. Nó nói rằng nếu tôi gửi đầu ra thích hợp đến /dev/dspthì nó sẽ phát ra âm thanh. Ví dụ là cat file.wav > /dev/dsp, trong đó file.wav chỉ là bất kỳ tệp .wav nào.

Khi tôi làm điều này, tôi được phép từ chối. Nếu tôi chạy cái này với sudo tôi vẫn bị từ chối. Nếu tôi suđầu tiên, không có âm thanh chơi.

Tại sao tôi được phép từ chối sudo? Tại sao không có âm thanh chơi ngay cả với su?


1
Hãy chắc chắn rằng người dùng của bạn nằm trong audionhóm.
Carl Groner

Bạn cũng có thể cần đảm bảo rằng tệp wav của mình là âm thanh thô - không phải tất cả các tệp .wav đều là dữ liệu thô.
Drake Clarris

@DrakeClarris, điều đó sẽ gây ra tiếng ồn, không phải là lỗi từ chối cấp phép.
cjm

@cjm Tôi đã suy nghĩ nhiều hơn về sự im lặng khi chơi bằng cách sử dụng su
Drake Clarris 5/12/13

Câu trả lời:


14

/dev/dsplà một phần của OSS, vốn không phải là một phần của nhân Linux trong ... một thời gian rất dài. Nó đã được thay thế bởi ALSA, sử dụng các thiết bị khác nhau, các chương trình khác nhau và một API khác nhau.

Có một mô-đun lớp mô phỏng mặc dù. Nếu có sẵn thì việc tải snd-pcm-ossmô-đun sẽ cho phép bạn sử dụng các thiết bị PCM cho OSS, chẳng hạn như /dev/dsp.

Hoặc chỉ cần dính vào dữ liệu đường ống đến aplayhoặc paplaythay vào đó.


2
sudo modprobe snd-pcm-osshoạt động trên Ubuntu của tôi để tải mô-đun đó. Tôi nhận được một /dev/dsp1và một /dev/dsp2trong số này.
Veda

9

Nếu tôi chạy cái này với sudo tôi vẫn bị từ chối.

Theo tuyên bố này, có vẻ như bạn đang thử một lệnh như:

sudo cat file.wav > /dev/dsp

Lý do bạn tiếp tục nhận được "quyền bị từ chối" là vì vỏ của bạn trước tiên cố gắng mở /dev/dspthiết bị để xuất ra, trước khi chạy lệnh (đó là sudo). Để shell mở chuyển hướng với quyền root, bạn sẽ phải làm một cái gì đó như:

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

6

Sách hết hạn, như đã lưu ý.
Vì vậy, để làm cho các ví dụ hoạt động với linux hiện đại hơn, nơi nó nói một cái gì đó như

cat music.wav > /dev/dsp

thay đổi nó thành:

cat music.wav | aplay

Và bạn vừa hoàn thành việc chuyển mã đầu tiên! Thắng lợi! Hãy gửi bản vá của tác giả. :-)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.