О Вашем вопросе о производительности каналы более эффективны, чем файлы, потому что никакой диск IO не необходим. Так cmd1 | cmd2
более эффективно, чем cmd1 > tmpfile; cmd2 < tmpfile
(это не могло бы быть верно если tmpfile
поддерживается на псевдодиске или другом запоминающем устройстве как именованный канал; но если это - именованный канал, cmd1
должен быть выполнен в фоновом режиме, поскольку его вывод может заблокироваться, если канал становится полным). Если Вам нужен результат cmd1
и все еще потребность отправить ее вывод в cmd2
, Вы должны cmd1 | tee tmpfile | cmd2
который позволит cmd1
и cmd2
работать в параллельных операциях чтения с диска предотвращения от cmd2
.
Именованные каналы полезны если много чтения-записей процессов для того же канала. Они могут также быть полезными, когда программа не разработана для использования stdin/stdout для его IO, бывшего должного использовать файлы. Я поместил файлы в курсив, потому что именованные каналы не являются точно файлами в точке зрения устройства хранения данных, поскольку они находятся в памяти и имеют фиксированный размер буфера, даже если у них есть запись файловой системы (для ссылочной цели). Другие вещи в UNIX имеют записи файловой системы, не будучи файлами: просто думайте /dev/null
или записи других в /dev
или /proc
.
Поскольку каналы (названный и без имени) имеют фиксированный размер буфера, операции чтения-записи им могут заблокироваться, заставив чтение/запись войти в состояние IOWait. Кроме того, когда Вы получаете EOF при чтении из буфера памяти? Правила об этом поведении четко определены и могут быть найдены в человеке.
Одна вещь, которую Вы не можете сделать с каналами (названный и без имени), ищут назад в данных. Поскольку они реализованы с помощью буфера памяти, это понятно.
О нас "everything in Linux/Unix is a file"
, Я не соглашаюсь. Именованные каналы имеют записи файловой системы, но не являются точно файлом. Каналы без имени не имеют записей файловой системы (кроме, возможно, в /proc
). Однако большинство операций IO на UNIX сделано с помощью функции чтения-записи, которым нужен дескриптор файла, включая канал без имени (и сокет). Я не думаю, что мы можем сказать это "everything in Linux/Unix is a file"
, но мы можем, конечно, сказать это "most IO in Linux/Unix is done using a file descriptor"
.
Я нашел решение здесь:
там я нашел:
$ amixer -c0 cset iface=MIXER,name='Input Source',index=1 'Front Mic' # (Record from Front Mic)
немного измененный согласно моей звуковой карте и установке (звуковая карта по умолчанию, другое упорядочивание объектов):
$ amixer cset name='Input Source',index=0 'Rear Mic'
Можно использовать sset
параметр. От man amixer
:
set or sset <SCONTROL> <PARAMETER> ...
Sets the simple mixer control contents. The parameter can be the volume either as a percentage from 0% to 100%
with % suffix, a dB gain with dB suffix (like -12.5dB), or an exact hardware value. The dB gain can be used only
for the mixer elements with available dB information. When plus(+) or minus(-) letter is appended after volume
value, the volume is incremented or decremented from the current value, respectively.
The parameters cap, nocap, mute, unmute, toggle are used to change capture (recording) and muting for the group
specified.
The optional modifiers can be put as extra parameters to specify the stream direction or channels to apply. The
modifiers playback and capture specify the stream, and the modifiers front, rear, center, woofer are used to spec‐
ify channels to be changed.
A simple mixer control must be specified. Only one device can be controlled at a time.
В Вашем случае должно быть столь же простым как (НЕ ПРОТЕСТИРОВАННЫЙ)
$ amixer sset 'Input Source',0,'Rear Mic'
$ amixer sset 'Input Source',0,'Rear Mic'
возвраты: Specify what you want to set...
.
– Grzegorz Wierzowiecki
30.09.2011, 09:54
$ amixer sset 'Input Source' 'Rear Mic'
работы для меня.
– Jack Kelly
19.02.2013, 16:50
У меня есть Система, где у меня есть звуковая карта материнской платы по умолчанию + звуковая карта WebCAM + внешняя карта звука USB = Общие 3 звуковых карты.
Теперь я хочу отключить звук/не отключить звук определенной звуковой карты из 3, в этом случае я могу сделать это использование в соответствии с методом:
$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: CA0132 Analog [CA0132 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: U0x11110x2222 [USB Device 0x1111:0x2222], device 0: USB Audio [USB Audio]
Subdevices: 0/1
Subdevice #0: subdevice #0
$ amixer -c2
Simple mixer control 'Speaker',0
Capabilities: pvolume pswitch pswitch-joined penum
Playback channels: Front Left - Front Right
Limits: Playback 0 - 151
Mono:
Front Left: Playback 44 [29%] [-20.13dB] [on]
Front Right: Playback 44 [29%] [-20.13dB] [on]
Simple mixer control 'Mic',0
Capabilities: pvolume pvolume-joined cvolume cvolume-joined pswitch pswitch-joined cswitch cswitch-joined penum
Playback channels: Mono
Capture channels: Mono
Limits: Playback 0 - 32 Capture 0 - 16
Mono: Playback 32 [100%] [47.81dB] [on] Capture 16 [100%] [23.81dB] [on]
Simple mixer control 'Auto Gain Control',0
Capabilities: pswitch pswitch-joined penum
Playback channels: Mono
Mono: Playback [on]
1) Динамик 2) Микрометр 3) Микрометр (Получение) 4) Автоматическое усиление
# Now this does MUTE for device 2
$ amixer -c2 sset Mic 0dB
Simple mixer control 'Mic',0
Capabilities: pvolume pvolume-joined cvolume cvolume-joined pswitch pswitch-joined cswitch cswitch-joined penum
Playback channels: Mono
Capture channels: Mono
Limits: Playback 0 - 32 Capture 0 - 16
Mono: Playback 0 [0%] [0.00dB] [on] Capture 0 [0%] [0.00dB] [on]
# Unmute for device 2
$ amixer -c2 sset Mic 70dB
Simple mixer control 'Mic',0
Capabilities: pvolume pvolume-joined cvolume cvolume-joined pswitch pswitch-joined cswitch cswitch-joined penum
Playback channels: Mono
Capture channels: Mono
Limits: Playback 0 - 32 Capture 0 - 16
Mono: Playback 32 [100%] [47.81dB] [on] Capture 16 [100%] [23.81dB] [on]