TI中文支持网
TI专业的中文技术问题搜集分享网站

android系统使用appe播放audio资源,相关进程被kill之后appe无法再次打开

Hi,

android系统使用appe播放audio资源,相关进程被kill之后appe无法再次打开,原因是appe资源被占用。

在Ti提供的demo中,通过 signal(SIGKILL, appe_exit); 来解决程序被kill的时候需要做的资源回收处理,即使用appe_close来释放资源。 但是,如果使用kill -9 来结束任务,这个signal是无法被捕捉到的,所以再次执行appe_open会fail,err原因是资源被占用。

我已经对TI的demo做了测试,demo捕捉信号如下:

    signal(SIGINT, appe_exit);
    signal(SIGTERM, appe_exit);
    signal(SIGABRT, appe_exit);
    signal(SIGKILL, appe_exit);
    signal(SIGHUP, appe_exit);

Ctrl + c 以及 kill均能被捕捉到,但是kill -9 不能被捕捉到。

在android系统中,资源紧张导致server被kill是常见的,由于信号无法捕捉到,再次重入执行appe_open会出现上述错误。

请帮助分析一下!

谢谢!

user151383853:

可能设备驱动对异常关闭的非初始化状态不能识别或控制, 导致出错了.

yan liu5:

回复 user151383853:

Hi  Airwill,

      确实是这样,再一次打开fail返回的原因是 appe_open() failed because APPE port is already occupied with playback,驱动部分没有相关err打印出来。在TI提供的demo中,是通过捕捉signal,然后执行appe_close,但是如果用kill -9,这个信号是捕捉不到的,demo再次打开也会挂死。

      因为appe_close的原型是appe_close(struct appe_pcm *pcm),需要参数。  是否有不需要参数也能释放资源的方式?这样可以在每次进程启动的时候,重置appe环境,避开这个问题?

谢谢!

赞(0)
未经允许不得转载:TI中文支持网 » android系统使用appe播放audio资源,相关进程被kill之后appe无法再次打开
分享到: 更多 (0)