如何使读取功能不挂?
-
25-09-2019 - |
题
我使用socat创建虚拟串行端口:
socat PTY,link=/dev/ttySV0,echo=1 PTY,link=/dev/ttySV1,echo=1
在我的用C语言编写的程序++,我打开ttySV1端口,并开始阅读。
在读功能是在一段时间,但问题是,所读取的功能挂起直到我将数据发送到的端口。你知道如何使taht功能不挂,只是退出如果在缓冲区中没有数据?
编辑:我发送使用数据到端口:
echo [data] > /dev/ttySV0
解决方案
您也可以使用取决于你正在运行的操作系统的系统读取功能。 细节应男人下(3)读出。
您使用fnctl必须设置O_NONBLOCK。这应当引起,如果管道/ FIFO当前是空的读取失败。我检查用于Linux的手册页,但他们应该在大多数POSIX的系统相似的行为。
其他提示
的一种方法是使用select()方法,以查看是否存在待读取的数据。 这或别的东西在谷歌找到(我搜索了“BSD插座选择“)应导致你在正确的道路。
不隶属于 StackOverflow