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表示无限等待)后,问题得到解决。
更多推荐
 


所有评论(0)