如何使读取功能不会挂起?
问题描述:
我使用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的系统中应该是类似的行为。
可以使用peek函数或多线程。 – JoshD 2010-10-23 00:04:01