我本来开开心心的写了一个select的server和client,在ubuntu上跑的开开心心的。然后就就把程序移植到mips的君正T21的开发板上,后来发现重复调用server(退出再进入),后发现bind err(Address already in use)。
netstat -apn | grep 108 一直被占用着,但是线程确实退出了。我有2个可疑点1)可能是tcp端口没有快速回收;2)就是线程退出时没有close。
疑问1,使用下面搞了一下,结果还是一样的。
int on = 1;
int ret = setsockopt(fd, SOL_SOCKET, SO_REUSEADDR , &on, sizeof(on));
if (ret < 0)
{
perror("setsockopt failed");
return NULL;
}
那就搞疑问2,发现在ubuntu上好好的线程退出函数,工作的美美的。mips交叉编译一下,运行在T21上(mips)结果线程退出处理函数就没有执行。哎,你说这uclibc就这么辣鸡吗。