/proc/self/fd
报告进程打开的文件。每个条目都是一个“神奇”的符号链接,其名称是文件描述符,目标是打开的文件。它的神奇之处在于,链接实际上指向文件本身,即使通过调用获得的文件名readlink
不是有效的文件名,例如,对于没有名称的文件(例如匿名管道),也会发生这种情况和套接字),并删除文件。
The abbreviation “fd” stands for file descriptor.
android 的默认动态库的查找路径 /system/etc/ 的ld.config*
当运行一个可执行程序的时候,系统根据一个配置文件(/system/etc/ld.config.<vndk_version>.txt
),为该程序创建对应的namespace。该配置文件分别定义了/system/bin/、/vendor/bin/等目录下可执行程序在运行时进程内的namespace配置。例如运行/system/bin/目录下的程序时,可执行程序所在的namespace的default_library_path
被设置为/system/lib64/
, /product/lib64
,即先从这两个目录开始查找依赖的库;而运行/vendor/bin/目录下的程序时,可执行程序所在的namespace的default_library_path
被设置为/odm/lib64
, /vendor/lib64
,即先从这两个目录查找依赖的库。
一个namespace可以关联多个其他namespace,当在这个namespace中找不到库文件的时候,可以在其直接关联的namespace中查找,如果仍然找不到,则不再继续。如果一个库文件在其调用者的namespace中找到,则该库也属于调用者的namespace,如果一个库文件在其调用者namespace的关联的某个namespace中找到,则该库属于关联的namespace。
openat(AT_FDCWD, "/proc/mounts", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
read(3, "/dev/block/dm-4 / ext4 ro,seclab"..., 1024) = 1024
可以看到 df命令终究还是读取的/proc/mounts
If an argument is the absolute file name of a device node containing a mounted file system, df shows the space available on that file system rather than on the file system containing the device node. This version of df cannot show the space available on unmounted file systems, because on most kinds of systems doing so requires non-portable intimate knowledge of file system structures.
如果参数是一个包含挂载的文件系统的设备节点的绝对文件名,则df显示该文件系统上的可用空间,而不是包含这个设备节点的文件系统上的可用空间。这个版本的df不能显示未挂载的文件系统上的可用空间,因为在大多数类型的系统上,这样做需要对文件系统结构有不可移植的深入了解。
标签:文件,strace,namespace,system,df,file,可执行程序 From: https://www.cnblogs.com/hhdom/p/18017916