我使用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插座选择“)应导致你在正确的道路。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top