+ -
当前位置:首页 → 问答吧 → 请高手帮忙看一下信号执行函数中的系统调用问题?

请高手帮忙看一下信号执行函数中的系统调用问题?

时间:2010-08-13

来源:互联网

问题是这样的,在我的存储区中有一个数据文件,另一个外围设备通过一个中断来通知我,把这个数据文件写到一个地址中,由于这个数据文件较大,来一个中断我写500个字节。我是这样做的,我在驱动中捕获这个中断,再通过信号传到应用程序中,

在应用程序中,有信号的执行函数,我在这个函数中来fgets,但是这个会有一个错误:fgets: Interrupted system call,通过找一些资料后,我发现:不能在信号的执行函数中调用fgets等标准IO函数,但因为我的应用程序较大,没有采用阻塞的方式,若

要继续用信号的方式,怎么解决系统调用的问题?

作者: armvc   发布时间: 2010-08-13

在调用fgets前屏蔽可能造成中断信号怎么样?

作者: rain_fish   发布时间: 2010-08-13

在这种微妙的情况下改成系统调用比较好,用write()

作者: davelv   发布时间: 2010-08-13

增加一个线程,专门处理信号.主线程屏掉那个信号.增加那个线程调用sigwait等待那个信号,一来就执行fgets.这样应该可以,不过样要考虑好线程间数据同步的问题

作者: liwangli1983   发布时间: 2010-08-13

谢谢,我试一下大家的方法!

作者: armvc   发布时间: 2010-08-13

又学习了。。

作者: SpringfieldKing   发布时间: 2010-08-13