使用lwip的ppp模式,驱动4G模块。
现在网络能正常使用。
但是使用select功能发现会导致死机。
阅读了net_sockets的实现,发现POSIX接口使用了一层映射将socket 句柄转换为文件系统句柄,
socket, recv , send等接口都做了映射,唯独select没有做映射。
所以有些疑惑,怀疑是select实现有bug。
自己将socket映射后调用lwip_select发现问题解决。 不是很清楚是系统问题还是我的使用问题。
系统中自带select函数,不需要自己封装实现,使用select函数需要开启在ENV中开启RT_USING_DFS_NET
使用标准POSIX接口,头文件引用#include <sys/select.h>
即可使用
[attach]3892[/attach]
阅读了net_sockets的实现,发现POSIX接口使用了一层映射将socket 句柄转换为文件系统句柄,
socket, recv , send等接口都做了映射,唯独select没有做映射。
所以有些疑惑,怀疑是select实现有bug。
我也发现问题了,我在调试ftp服务器的时候,由于PASV模式,使用到select然后就不正常,使用PORT模式,就没 …
select 功能在 RT-Thread 中还是蛮常用的。
MQTT 软件包中,还同时对 PIPE 和 网络一起使用 select 。可否先对比具体的调用代码。