杂文:snd_pcm_open 连不上声音设备,报错connection refused

最后更新于2022年4月11日 18:51:41

今天在调一个golang的代码,出现个奇怪的现象,代码手动跑就没事,挂在circus里面跑就连不上声音设备。这部分的代码是调用的第三方库,查看源码后发现是使用cgo,调用alsa库的snd_pcm_open函数实现的。于是抛开cgo还就那个不谈,写了一个C语言测试代码,发现如下代码挂到circus里面也是同样的情况:

#include 
#include 

int main(int argc, char **argv)
{
    snd_pcm_t *handle;
    int err = snd_pcm_open(&handle, "default", SND_PCM_STREAM_PLAYBACK, 0);

    printf("%d\n", err);
    return 0;
}

原因:
声音这个东西比较特殊,在circus无论是使用root还是1000的用户,都不包含对应的组?大概是这么个意思
需要做以下操作:

cat /etc/group | grep pulse #这里可以看到需要的group
id #看是否有对应权限
sudo gpasswd -a ${USER} audio
sudo gpasswd -a ${USER} pulse-access

然后重启电脑。

你可能感兴趣的:(ubuntu和shell相关,C,ubuntu)