为啥说是 Linux 版的 getaddrinfo,因为这世界上还有一个安卓的。而且这一不注意就搅混了。毕竟Linux版本使用的是 glibc 库,而安卓版本用的是 bionic 库。两个不同的 C 库,两个不同的实现,原理相似,基因相似,实质不同。
/ # strace /data/getaddinfo localhost
execve("/data/getaddinfo", ["/data/getaddinfo", "localhost"], [/* 24 vars */]) = 0
brk(0) = 0xb74000
uname({sys="Linux", node="localhost", ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f02000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/vendor/lib/tls/v7l/neon/vfp/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/vendor/lib/tls/v7l/neon/vfp", 0xbea1b2e0) = -1 ENOENT (No such file or directory)
open("/vendor/lib/tls/v7l/neon/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/vendor/lib/tls/v7l/neon", 0xbea1b2e0) = -1 ENOENT (No such file or directory)
open("/vendor/lib/tls/v7l/vfp/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/vendor/lib/tls/v7l/vfp", 0xbea1b2e0) = -1 ENOENT (No such file or directory)
open("/vendor/lib/tls/v7l/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/vendor/lib/tls/v7l", 0xbea1b2e0) = -1 ENOENT (No such file or directory)
open("/vendor/lib/tls/neon/vfp/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/vendor/lib/tls/neon/vfp", 0xbea1b2e0) = -1 ENOENT (No such file or directory)
open("/vendor/lib/tls/neon/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/vendor/lib/tls/neon", 0xbea1b2e0) = -1 ENOENT (No such file or directory)
open("/vendor/lib/tls/vfp/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/vendor/lib/tls/vfp", 0xbea1b2e0) = -1 ENOENT (No such file or directory)
open("/vendor/lib/tls/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/vendor/lib/tls", 0xbea1b2e0) = -1 ENOENT (No such file or directory)
open("/vendor/lib/v7l/neon/vfp/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/vendor/lib/v7l/neon/vfp", 0xbea1b2e0) = -1 ENOENT (No such file or directory)
open("/vendor/lib/v7l/neon/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/vendor/lib/v7l/neon", 0xbea1b2e0) = -1 ENOENT (No such file or directory)
open("/vendor/lib/v7l/vfp/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/vendor/lib/v7l/vfp", 0xbea1b2e0) = -1 ENOENT (No such file or directory)
open("/vendor/lib/v7l/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/vendor/lib/v7l", 0xbea1b2e0) = -1 ENOENT (No such file or directory)
open("/vendor/lib/neon/vfp/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/vendor/lib/neon/vfp", 0xbea1b2e0) = -1 ENOENT (No such file or directory)
open("/vendor/lib/neon/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/vendor/lib/neon", 0xbea1b2e0) = -1 ENOENT (No such file or directory)
open("/vendor/lib/vfp/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/vendor/lib/vfp", 0xbea1b2e0) = -1 ENOENT (No such file or directory)
open("/vendor/lib/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/vendor/lib", {st_mode=S_IFDIR|0755, st_size=2456, ...}) = 0
open("/system/lib/tls/v7l/neon/vfp/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/system/lib/tls/v7l/neon/vfp", 0xbea1b2e0) = -1 ENOENT (No such file or directory)
open("/system/lib/tls/v7l/neon/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/system/lib/tls/v7l/neon", 0xbea1b2e0) = -1 ENOENT (No such file or directory)
open("/system/lib/tls/v7l/vfp/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/system/lib/tls/v7l/vfp", 0