【发布时间】:2012-05-30 11:57:52
【问题描述】:
我正在用 C++ 在 Ubuntu Linux 上编写一个应用程序来从串行端口读取数据。通过我的代码调用select() 然后ioctl(fd,FIONREAD,&bytes_avail) 可以成功运行,以找出在最终使用read() 获取数据之前有多少字节可用。
我的问题是:每次select 返回数据时,可用字节数报告为 8。我猜这是在某处设置的缓冲区大小,当此缓冲区为满了。
作为开发人员,我是 Linux 新手(但对 C++ 并不陌生),我曾尝试研究(但没有成功)是否可以更改此缓冲区的大小,或者我的假设是否正确。在我的应用程序中,时间很关键,只要读取缓冲区上有新字节,我就需要收到警报。这是否可能,无需深入研究内核代码?
【问题讨论】:
-
我不明白?据我所知,在 select() 返回之前我什么都做不了,此时我从缓冲区读取数据。此时 8 个字节已经到达,我想在 1 个字节后收到通知。我错过了什么吗?
标签: c++ linux serial-port