gpt4 book ai didi

c - 如何以root身份使用pulseaudio API?

转载 作者:行者123 更新时间:2023-11-30 16:49:48 28 4
gpt4 key购买 nike

我目前正在尝试使用pulseaudio simple API使用我的树莓派 3 记录 USB 声卡中的麦克风数据。我使用了示例程序 parec-simple来 self 自己的程序中的pulseaudio,效果非常好。

我使用此代码的程序正在访问 gpio,因此我需要以 root 身份运行它。但是,当我尝试以 root 身份执行该程序时,出现以下错误:

Home directory not accessible: Permission denied
W: [pulseaudio] core-util.c: Failed to open configuration file '/root/.config/pulse//daemon.conf': Permission denied
W: [pulseaudio] daemon-conf.c: Failed to open configuration file: Permission denied
pa_simple_new() failed: Connection refused

使用的代码如下:

static const pa_sample_spec ss = {
.format = PA_SAMPLE_S16LE,
.rate = 44100,
.channels = 1
};
pa_simple *s = NULL;
int ret = 1;
int error;
/* Create the recording stream */
if (!(s = pa_simple_new(NULL, argv[0], PA_STREAM_RECORD, NULL, "record", &ss, NULL, NULL, &error))) {
fprintf(stderr, "pa_simple_new() failed: %s\n", pa_strerror(error));
goto finish;
}



while(1)
{
uint8_t buf[BUFSIZE];
/* Record some data ... */
if (pa_simple_read(s, buf, sizeof(buf), &error) < 0) {
fprintf(stderr, __FILE__": pa_simple_read() failed: %s\n", pa_strerror(error));
goto finish;
}

/* And write it to STDOUT */
if (loop_write(STDOUT_FILENO, buf, sizeof(buf)) != sizeof(buf)) {
fprintf(stderr, __FILE__": write() failed: %s\n", strerror(errno));
goto finish;
}

}
ret = 0;
finish:
if (s)
pa_simple_free(s);
return ret;

我已经按照建议尝试了 chown pi:pi/home/pi here试图修复它,但它不起作用。将/home/pi 的所有者从 pi 更改为 root 对我来说也不起作用。

我还尝试干净地重新安装pulseaudio,但不幸的是它没有修复它。

那么我该如何修复这些错误呢?

最佳答案

当您使用 sudo 运行进程时,它不会将主目录更改为 /root - sudo echo $HOME #/home/username。您需要通过运行 sudo HOME=/rootexecutable 来指定 HOME 目录。

当您想从根目录访问pulseaudio时,您需要使用命令在系统范围内运行它 - sudopulseaudio --system=true

然后您将收到来自pulseaudio的错误:

W: [pulseaudio] protocol-native.c: Denied access to client with invalid authentication data.

可以通过将root用户添加到audio-pulse组来解决 - sudo adduser rootpulse-access

关于c - 如何以root身份使用pulseaudio API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42458387/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com