我有一个使用 libespeak 和 ALSA 的 C++ 应用程序。
此应用程序第一次生成音频时,会在 stderr 上生成以下输出:
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm_dmix.c:961:(snd_pcm_dmix_open) The dmix plugin supports only playback stream
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
我有自己的日志记录,我想禁用这些错误,或者通过我自己的日志记录框架重新路由它们以进行额外的处理和报告。
最佳答案
可以使用 freopen 重定向 stderr 的输出。( Is it possible to disable stderr in C++? ) 在我的例子中,这些错误是在调用 Pa_Initialize();
时生成的,所以我将 stderr 重定向到/dev/在它被调用之前为 null,然后将其重定向回来。
freopen("/dev/null","w",stderr);
PaError err= Pa_Initialize();
freopen("/dev/tty","w",stderr);
关于c++ - 如何禁用或重新路由 ALSA lib 日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24778998/