项目中需要在android的c里面获取本机的mac地址,参考如下网址代码,顺利获取本机mac地址。本以为任务顺利完成,没想到测试报机子crash,经检查,为socket的文件句柄没有回收。检查各处代码,发现获取本机mac地址时,未关闭socket句柄导致。项目中因需要频繁获取mac地址,此时socket所占用的句柄便会一直增长,直到超过1024,机子crash。因此,需在获取mac地址的函数中,退出之前增加close(sock);语句,记录一下,警示自己。
https://blog.csdn.net/rock4you/article/details/70305843
查问题过程中使用的命令:
adb连接到android
ps |grep "xxx"获取pid号
lsof -n | grep pid -c 获取进程占用文件句柄数
ll /proc/pid/fd 查看进程文件句柄细节
strace -e recvfrom,sendto -f -F -p pid 查看进程内socket的recvfrom和sendto操作细节