android13的C语言的select超时无效果
OPPO K9s ColorOS13 ,android 13系统APP结合JNI开发,在使用select函数等待socket变化时,发现如果网络断开之后,超时(超时设置为2秒)没有生效,select函数一直处于阻塞状态当网络恢复,也一是直阻塞状态,直到熄屏再唤醒之后,才恢复正常,测试过其它品牌的android 13和oppo 其它机型的android 11没有发现有此问题
int rc, max_sock = 0;
fd_set socket_mask;
struct timeval wait_time;
time_t now;
FD_ZERO(&socket_mask);
FD_SET(eee->udp_mgmt_sock, &socket_mask);
max_sock = eee->udp_mgmt_sock;
if(eee->sock >= 0) {
FD_SET(eee->sock, &socket_mask);
max_sock = max(eee->sock, eee->udp_mgmt_sock);
}
#ifndef SKIP_MULTICAST_PEERS_DISCOVERY
if(eee->conf.allow_p2p) {
FD_SET(eee->udp_multicast_sock, &socket_mask);
max_sock = max(eee->sock, eee->udp_multicast_sock);
}
#endif
#ifndef WIN32
FD_SET(eee->device.fd, &socket_mask);
max_sock = max(max_sock, eee->device.fd);
#endif
wait_time.tv_sec = (eee->sn_wait) ? (SOCKET_TIMEOUT_INTERVAL_SECS / 10 + 1) : (SOCKET_TIMEOUT_INTERVAL_SECS);
wait_time.tv_usec = 0;
rc = select(max_sock + 1, &socket_mask, NULL, NULL, &wait_time);
已查到原因 开启 允许完全后台行为 就没有这个问题
页:
[1]