腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
文章
问答
(6431)
视频
沙龙
1
回答
VTIME
和
VMIN
似乎
不会
改变
posix
read
()
调用
的
阻塞
行为
、
、
、
、
我正在尝试理解
VMIN
和
VTIME
是如何控制
read
()
posix
调用
的
阻塞
行为
的
。 在我
的
示例中,我将
VTIME
设置为10 (并尝试了其他组合),这应该会阻止读取1秒,直到它被解锁,对吗?这是我
的
理解,但情况
似乎
并非如此。 我在我
的
主机上打开了minimum,我看到
read
()只会在我点击minicom中<
浏览 46
提问于2021-08-06
得票数 0
3
回答
termios
VMIN
VTIME
和
阻塞
/非
阻塞
读取操作
、
我正在尝试写一个简单
的
Linux下
的
C串行通信程序。我对
阻塞
/非
阻塞
读取
和
VMIN
/
VTIME
关系感到困惑。open( "/dev/t
浏览 4
提问于2013-11-23
得票数 7
2
回答
Linux串行端口
的
问题
、
我想要超时
的
非
阻塞
,即使0个字符到达。termios结构允许您设置
VTIME
和
VMIN
,但是如果
VMIN
大于0,并且返回0个字符,则读取
调用
将
阻塞
forever...WTF,这是为什么。这
似乎
不包括其他设备在短时间内停机,而现在我
的
应用程序在读取
调用
时被
阻塞
的
情况。这
似乎
是一个需要忽视
的
关键
行为
。我真的不想实现
浏览 10
提问于2011-10-08
得票数 1
回答已采纳
1
回答
javax.comm.CommPort enableReceiveThreshold(1)
和
enableReceiveTimeout
的
语义
、
多年来,我多次使用RXTX
和
PureJavaComm。我
的
目的是在没有收到数据
的
情况下以最小
阻塞
延迟响应InputStream.
read
()
调用
,否则返回已经接收到
的
字符数。我不记得
的
是为什么/是否有必要
调用
enableReceiveThreshold(1)。PureJavaComm有src/jtermios/windows/JTermiosImpl.java中
的
Windows
浏览 0
提问于2016-05-16
得票数 1
1
回答
从串行端口接收无限循环
、
= (tty.c_cflag & ~CSIZE) | CS8;tty.c_lflag = 0; tty.c_cc[
VMIN
] = 0;tty.c_cflag |= (CLOCAL | CREAD)tty.c_cflag &= ~(PARENB | PARODD);tty.c_cf
浏览 0
提问于2012-07-16
得票数 3
回答已采纳
1
回答
无论在
VTIME
中设置了什么,
POSIX
read
()
调用
都将永远被
阻塞
、
、
、
、
我需要配置UART设置,使
read
()
调用
保持
阻塞
状态,直到在超时期间没有接收到任何数据时再次解除
阻塞
之前
的
某一段时间。因此,如果超时是5秒,它将保持
阻塞
状态,直到最多5秒,如果它没有接收到任何字节,然后解除
阻塞
...我尝试使用
VMIN
,它会
阻塞
read
()
调用
,直到在允许
的
时间内没有字符被读取,之后对
read
()
的
调用
返回0,
浏览 9
提问于2021-09-14
得票数 1
1
回答
POSIX
行为
与
VTIME
和
read
()
、
、
、
、
经过几个小时
的
在线研究,我仍然不太清楚
VTIME
和
read
(int fildes, void *buf, size_t nbyte);是如何一起工作
的
。在我看来,一旦
read
()得到一个字节,它就会忽略
VTIME
。只有在没有读取字节
的
情况下才会遵守
VTIME
。如果我看得对,
的
解释
似乎
证实了这一点:
VMIN
=0
和
VTIME
>0,这是一
浏览 0
提问于2015-01-25
得票数 0
回答已采纳
1
回答
字节未发送到串行驱动程序缓冲区。
、
它还
调用
函数(/dev/pts/1)并将argv[1] argv[1]作为参数传递给它。然后,在使用任何其他I/O函数之前,函数清除O_NONBLOCK标志并切换回“
阻塞
”。然后设置
VMIN
和
VTIME
,以便使
read
()
浏览 3
提问于2021-04-14
得票数 0
回答已采纳
1
回答
如何在
阻塞
读()
调用
中检测USB电缆断开?
、
、
、
、
我编写
的
读取数据
的
守护进程程序(C++/ call )在USB电缆断开并在
阻塞
read
()
调用
中无限期停止时
不会
退出。 termios被设置为使用
VMIN
=1
和
VTIME
= 0进行
阻塞
r
浏览 2
提问于2021-05-19
得票数 0
1
回答
OpenBSD串行I/O:-lpthead使
read
()永远
阻塞
,即使设置了termios
VTIME
?
、
、
我设置了这个端口,使其在
调用
read
()时会在半秒内超时(通过使用
VTIME
参数),这在Linux
和
FreeBSD上都有效。然而,在OpenBSD 5.1中,当没有数据可用时,
read
()
调用
将永远
阻塞
(见下文)。我期望
read
()在500ms后返回0。有人能想到termios API在OpenBSD下表现不同
的
原因吗,至少在超时特性方面是这样? 编辑:无超时问题是由链接到pthread引起
的
。不管我是否真的在使用任
浏览 1
提问于2013-04-12
得票数 1
回答已采纳
1
回答
无法与特定波特率通信
、
、
我
的
应用程序能够与波特率通信,如4800,9600
和
115200,但不能与14400或38400。我必须包括asm/termios,因为我需要struct termios2,因为我将使用c_ispeed
和
c_ospeed成员进行任何buad速率。另外,我遇到
的
第二个问题是,
read
函数
不会
在
VTIME
之后返回。你知道为什么会这样吗?任何帮助都是非常感谢
的
。谢谢。] = 1; // return <em
浏览 0
提问于2019-03-14
得票数 0
1
回答
是否有一种方法来查询串口上可用
的
数据量?
、
、
、
、
更具体一点:如果有人研究过Arduino上
的
编程,可以很容易地通过
调用
(从Arduino API)检查是否可以从USB串行接口读取数据:通过这种方式,可以避免可能
阻塞
的
read
()-call,并在必要或需要时简单地读取数据。但是,考虑到相反
的
情况:“程序正在检查从Arduino发送
的
串行”,到目前为止,我已经看到在C中实现类似的唯一方法是通过将termios属性
VMIN
浏览 1
提问于2016-10-19
得票数 0
回答已采纳
1
回答
文件描述符处于
阻塞
模式,但
read
()没有
阻塞
、
、
、
、
我正在为Beaglebone系统编写一些处理串口读写
的
软件。操作系统是Debian 9,我正在用--std=gnu99用C编写代码。= 4) printf("write fail %d\n", n); if(n !printf("uart error\n"); // to close
浏览 0
提问于2019-07-07
得票数 1
1
回答
cfmakeraw()生成
的
termios结构中
的
哪个属性负责ncurses ()中
的
功能?
我试图复制ncurses
的
标准解除
阻塞
设置(raw(),noecho().)用termios.h。我仔细阅读了tcsetattr() 来查找所有的标志,我注意到有一个名为cfmakeraw()
的
函数。The settings of MIN (c_cc[
VMIN
]) and TIME (c_cc[
VTIME
]) determine the circumstances in which a
read
,哪些标志负责ncurses
的
raw()
行为
,其
浏览 9
提问于2022-10-23
得票数 0
回答已采纳
1
回答
在OSX下使用termios捕获转义键
、
、
、
、
我试图在OSX终端或xterm上捕获ESC密钥(ASCII 27),使用kbhit来区分真正
的
逃逸键
和
箭键:#include <termios.h> newt.c_cc[
VTIME
] = 0; atexit(kb_fini);{ newt.c_c
浏览 1
提问于2015-12-10
得票数 1
回答已采纳
6
回答
Haskell读取原始键盘输入
、
、
特别是,在Haskell上面
似乎
有一些提供行编辑功能
的
东西。如果我使用getLine,我
似乎
能够使用向上箭头获取前面的行,编辑文本,并且只有当我按Enter键时,该文本才会对Haskell应用程序本身可见。我想要
的
是阅读个别按键
的
能力,这样我就可以自己实现行编辑功能。 也许我
的
问题不清楚。基本上,我想要构建一些类似于Vi或Emacs (或)
的
东西。我已经知道有终端绑定,可以让我做花哨
的
控制台模式打印,所以输出端不应该是一个问题。我只是在寻找一种获取原
浏览 1
提问于2014-04-14
得票数 22
回答已采纳
1
回答
FTDI D2XX窗口到Linux
、
、
、
对于串行端口,我有一个简单
的
轮询循环,它接收连续
的
位邦数据,而且我看到性能从Windows到Linux
的
巨大损失。这是一个非常简单
的
应用程序,使用FTDI
的
D2XX驱动程序运行UART,在异步bit模式下连续读取传入数据。 它只是总是轮询一个最小数量
的
传入字节,如果数量满足,读取整个接收缓冲区进入内存,重复。我
的
问题是,我最初是用Windows编写
的
。每个回路在2毫秒或更短
的
时间内完成,约0.01%
的
环路偏离范围进入
浏览 15
提问于2022-11-18
得票数 0
2
回答
从串口恰好读取N个字节
、
、
、
我需要我
的
线程
阻塞
,直到端口上至少有N字节可用,或者预设
的
超时时间已经到期。超时值
和
N在运行时都应该是可变
的
。 注意:在Linux上,无论是否使用boost,都使用C/C++。
浏览 3
提问于2012-12-18
得票数 4
回答已采纳
1
回答
强制读取系统
调用
以阻止
、
、
我有一个可以读写串口
的
程序。我有一个读取器线程,它读取数据并将信息提供给共享内存。读取器线程应该休眠,直到数据可用。所以我想通过
read
()系统
调用
来
阻塞
线程
调用
。考虑到手册页,除非您向open提供O_NONBLOCK,否则
read
应该总是
阻塞
的
。但是我有一个活动线程,它里面的
read
不断返回-1。ALso更改
VTIME
和
VMIN
不会
有什么不同。端口是这样打开<e
浏览 2
提问于2012-12-15
得票数 0
回答已采纳
1
回答
Ubuntu串行通信:读取失败,然后立即进入
、
、
、
但是,当我试图从串行端口
read
()读取数据时,几乎所有时间都会返回-1,直到突然间,在一个看似随机
的
点上,我突然得到了大量
的
消息。uint8_t buf[1024];//Rx bufferbytes_
read
=
read
(fd,&b
浏览 1
提问于2018-07-05
得票数 2
回答已采纳
点击加载更多
扫码
添加站长 进交流群
领取专属
10元无门槛券
手把手带您无忧上云
相关
资讯
tcp粘包问题补充
单线程和多线程语言的异步 I/O 如何工作?
系统I/O模型
Python 的多线程与 GIL
Android C++系列:Linux信号(三)
热门
标签
更多标签
云服务器
ICP备案
对象存储
腾讯会议
云直播
活动推荐
运营活动
广告
关闭
领券