在VxWorks中关闭无响应设备文件的端口的正确方法是什么?

时间:2018-02-12 20:29:13

标签: c++ c select ioctl vxworks

我目前正在使用VxWorks中的一个应用程序,该应用程序使用read()函数与设备文件对话,并使用一组ioctl()来配置通信端口。有时会发生read()永远停留,因为它等待消息,但永远不会收到消息。然后永远不会达到以下ioctl(fd,FIOCANCEL,0)

我的问题是如何将select()与FIOCANCEL结合使用以正确断开连接,以便以后可以再次执行read()

如果可能的话,我也想知道FIOCANCEL的实施,我可以修改它。

1 个答案:

答案 0 :(得分:0)

VxWorks上的

select()与任何其他POSIX平台上的select相同(虽然我不记得它是否像Linux一样修改了超时参数; POSIX说这两种行为都没问题)。

据说你在谈论串口?然后,在select()的调用中包含该内容应该没问题。然后你不需要ioctl(fd,FIOCANCEL,0),因为如果read()表明确实有东西要读,你只会打电话给select()。如果select()超时,请不要致电read()