一切都在标题中。手册页什么也没说。一些谷歌报告说,一些人在dlopen之后检查errno,但很少,结果也不尽相同。函数确实返回一个成功/不成功的值,但是应该如何找出失败的原因。
那么dlopen()设置了errno吗?那么,在哪里定义了不同的errno值?如果没有,应该使用什么来检查导致故障的原因?
发布于 2016-10-20 15:02:13
不是 (重点补充)。
成功完成后,dlopen()将返回一个符号表句柄。如果找不到文件,无法打开读取文件,不具有dlopen()处理的适当可执行对象文件格式,或者在加载文件或重新定位其符号引用过程中发生错误,则dlopen()将返回一个空指针。应通过 http://pubs.opengroup.org/onlinepubs/9699919799/functions/dlerror.html获得更详细的诊断信息。
正如其他人所指出的,没有什么可以禁止dlopen() (或者更可能是dlopen()调用的函数)修改errno。但是符合标准的dlopen()不会通过errno报告自己的错误。你需要打电话给dlerror()。
https://stackoverflow.com/questions/40158005
复制相似问题