Наушники время от времени прерывают воспроизведение звука

Предполагая, что дескриптор открыт, C действительно можетwrite(или, что более вероятно, использовать вызов более высокого -уровня, который в конечном итоге сведется кwrite(2))этому дескриптору. Вот этоwrite2three.c

#include <err.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
    int fd;
    if ((fd = dup(3)) == -1) err(1, "dup failed");
    dprintf(fd, "hello\n");
    exit(EXIT_SUCCESS);
}

.

$ make write2three  
cc     write2three.c   -o write2three
$./write2three
write2three: dup failed: Bad file descriptor
$ rm out
$./write2three 3>out
$ cat out
hello
$ 

После этого вам может понадобиться очистить оболочку.

$ exec 3>&-
$ 
0
05.10.2019, 18:28
1 ответ

Обходной путь
Найдите конфликтующий порт и отключите его.
enter image description here
Это можно сделать с помощью HDAJackRetask -, выбрать правильную звуковую карту/кодек (, например. Realtek ALC892 ), найдите конфликтующий порт/контакт (, например. 0x1b )и переопределите его на «Не подключено». Затем нажмите «Применить сейчас».

Если появляется сообщение об ошибке «Устройство или ресурс занят», вам необходимо временно полностью отключить pulseaudio. В зависимости от обстоятельств это сработает:

  1. Попробуйте просто убить и перезапустить -pulseaudio --kill, а затем pulseaudio --start
  2. Если PulseAudio автоматически возрождается, скажите ему, чтобы он больше не появлялся автоматически
  3. Если это не сработает, вам может потребоваться отключить службу systemd на короткое время (и начать заново, заменив stop на start)

После этого вы можете нажать «Установить переопределение загрузки», чтобы исправление применялось и при следующем перезапуске. Делайте это только тогда, когда вы уверены, что это работает, конечно.

0
28.01.2020, 03:13

Теги

Похожие вопросы