昨天移植linux上的程序到android emulator上
top后发现cpu占用特别高。strace后发现循环调用SYS_282 (某参数随机生成):
SYS_282(0xffffffff, 0xbea0866c, 0x10, 0xd9, 0xe0d9) = -1 EBADF (Bad file descriptor)
查找$ANDROID/bionic/libc/kernel/arch-arm/asm/unistd.h文件
282调用对应:
#define __NR_bind (__NR_SYSCALL_BASE+282)
发现bind的socket没创建成功就用了
这个Native程序是通过Java exec调用的,Android中设置了严格的访问权限
修改Manifest.xml,添加
<uses-permission android:name="android.permission.INTERNET" >
</uses-permission>
pass