gpt4 book ai didi

c++ - 如何使读取功能不挂起?

转载 作者:行者123 更新时间:2023-11-30 03:09:36 26 4
gpt4 key购买 nike

我正在使用 socat 创建一个虚拟串行端口:

socat PTY,link=/dev/ttySV0,echo=1 PTY,link=/dev/ttySV1,echo=1

在我用 C++ 编写的程序中,我打开 ttySV1 端口并开始读取。

读取函数有一段时间了,但问题是读取函数挂起,直到我向端口发送数据。您知道如何使 taht 函数在缓冲区中没有数据时不挂起并直接退出吗?

编辑:我使用以下方式将数据发送到端口:

echo [data] > /dev/ttySV0

最佳答案

您还可以使用系统读取功能,具体取决于您运行的操作系统。详情应该在 man (3) read 下。

您必须使用 fnctl 设置 O_NONBLOCK。如果管道/FIFO 当前为空,这将导致您的读取失败。我查看了 Linux 的手册页,但它们在大多数基于 POSIX 的系统中应该具有相似的行为。

关于c++ - 如何使读取功能不挂起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4001760/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com