当前位置: 技术问答>linux和unix
一个简单的音频编程问题
来源: 互联网 发布时间:2015-10-19
本文导语: 我在程序中使用了audio_fd=open("/dev/dsp",......),在程序最后使用了close(audio_fd).但由于程序错误,程序未能正常结束,导致close(audio_fd)未被正常执行,以后每次运行根本打不开音频设备了,提示Device or Resource busy.我只好...
我在程序中使用了audio_fd=open("/dev/dsp",......),在程序最后使用了close(audio_fd).但由于程序错误,程序未能正常结束,导致close(audio_fd)未被正常执行,以后每次运行根本打不开音频设备了,提示Device or Resource busy.我只好每次都重启,实在是太麻烦了,想听听各位高见。
|
用异常,最后无论如何都用调用close(audio_fd)
|
大概你用的不是alsa模拟的oss。在我的系统(2.6.12的内核)上即使用oss接口编程也没有你的问题。
2.6的内核已经有alsa声音系统了,alsa系统有oss的模拟(http://www.alsa-project.org/~iwai/OSS-Emulation.html)
所谓oss就是/dev/dsp /dev/mixer这样的接口,用传统的open,close就可以完成音频
编程,但是局限性很大,所以现在趋势是用alsa接口替代oss接口。
关于alsa的接口编程介绍,可以看http://equalarea.com/paul/alsa-audio.html
2.6的内核已经有alsa声音系统了,alsa系统有oss的模拟(http://www.alsa-project.org/~iwai/OSS-Emulation.html)
所谓oss就是/dev/dsp /dev/mixer这样的接口,用传统的open,close就可以完成音频
编程,但是局限性很大,所以现在趋势是用alsa接口替代oss接口。
关于alsa的接口编程介绍,可以看http://equalarea.com/paul/alsa-audio.html
|
用CTRL+C中断程序,然后捕获这个信号,定义自己的信号处理函数,在这个函数里面关闭设备
这样看行不行
这样看行不行