Linux串口编程select函数返回-1,errno=22(EINVAL)原因
linux串口编程select
·
- 现象
今天在麒麟系统(类Ubuntu)编写串口通信程序时,
通过select接口获取是否有数据可以读或者写时,select函数有时返回-1,获取errno为22(EINVAL),意思是无效的参数。
#define EINVAL 22 /* Invalid argument */
- 原因为:
传入最后一个timeout参数,默认值为一个负数。
struct timeval
{
__time_t tv_sec; /* Seconds. /
__suseconds_t tv_usec; / Microseconds. */
};
- 解决方案:
将tv_sec和tv_usec设置为0(0表示无限等待)后,问题得到解决。
更多推荐
已为社区贡献2条内容
所有评论(0)