dlopen()设置errno吗?
一切都在标题中。 手册页没有说什么。 一些谷歌报告有些人在dlopen之后检查errno,但只是少数并且有各种结果。 该函数确实返回成功/非成功值,但应该如何找出失败的原因。
那么dlopen()
设置errno吗? 那么,在哪里定义了不同的errno值? 如果没有,应该用什么来检查导致失败的原因?
不 (重点补充)。
成功完成后, dlopen()将返回符号表句柄。 如果找不到文件 ,无法打开读取,不是dlopen()处理的适当的可执行目标文件格式,或者在加载文件或重定位其符号引用的过程中发生错误, dlopen()将返回空指针。 应通过dlerror()获得更详细的诊断信息 。
正如其他人所指出的,没有任何东西禁止dlopen()
(或更可能是dlopen()
调用的函数)修改errno
。 但符合标准的dlopen()
不会通过errno
报告自己的错误。 你需要调用dlerror()
。