最近我发现了一个对我来说很新的问题,我会很感激建议。我正在使用 termios 函数在 Linux 上进行串行通信。我实际上不使用真正的串口,而是使用虚拟小工具串行驱动程序/dev/ttyGS0
。文件描述符以非阻塞方式打开。
我的程序会定期生成数据并将其发送到 /dev/ttyGS0。如果另一端读取它,则没有信息。如果没有,则某些内部 fifo 会填满并写入返回“将阻塞”错误。到目前为止一切顺利,我对此没有任何问题。
问题是,当我想用填充的 fifo 关闭此类文件描述符时,关闭功能块!不是无限期的,而是大约 10 秒。
我试着tcflush(uart->fd, TCOFLUSH)
在关闭之前做,没有任何效果。
这对我来说是如此奇怪的行为,我没有找到任何描述,关闭可能会阻塞。有什么办法可以避免这种情况吗?或者至少减少这个超时?我应该在哪里寻找这个超时?VTIME 属性对此也没有影响。