当我在iOS上检查dlopen
的手册页时,它说:
当path包含斜杠(即完整路径或部分路径)时dlopen() 搜索以下内容,直到找到兼容的Mach-O file:$ DYLD_LIBRARY_PATH(来自路径的叶子名称),当前正在工作 目录(部分路径),$ DYLD_FALLBACK_LIBRARY_PATH(带叶子) 路径名称。)
但根据POSIX(Open Group):
file参数用于构造目标文件的路径名。如果file包含斜杠字符,则file参数将用作文件的路径名。否则,file以实现定义的方式用于生成路径名。
因此,如果您关注POSIX,您可以使用dlopen("/path/to/lib", 0)
准确打开该文件,但根据iOS文档,它将在lib
中搜索名为$DYLD_LIBRARY_PATH
的Mach-O文件,当前目录,最后是$DYLD_FALLBACK_LIBRARY_PATH
。
如果我真的想在iOS下打开/path/to/lib
而不是在搜索路径中找到任何(可能是恶意的)lib
,我该怎么办?
(如果我理解正确,POSIX也允许您使用相对路径。这是否意味着它是相对于当前工作目录的路径?)