Linux串口编程select函数返回-1,errno=22(EINVAL)原因

  • 现象

今天在麒麟系统(类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表示无限等待)后,问题得到解决。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部