zeromq - dlmopen 导致 zmq 错误“系统调用中断”
问题描述
我正在尝试使用几个实例dlmopen()
来启动相同的文件。
因为我的共享对象包含很少的静态方法,所以我必须使用它来创建它的适当实例。
对于每个实例(如果重要,都在同一个线程中),在我使用的构造函数中:.so
dlmopen()
handle_ = dlmopen(LM_ID_NEWLM, "path_to_so", RTLD_LAZY | RTLD_DEEPBIND);
而且我没有收到任何错误,我什至可以dlsym()
用来从 so 文件中调用函数:
int (*function_name)(int, const char *);
function_name = (int (*)(int, const char *))(unsigned long)dlsym(handle_, "function_name");
发生的事情是当我尝试使用任何类型的“ zmq send ”方法(接收效果很好)时,我得到:
terminate called after throwing an instance of 'zmq::error_t'
what(): Interrupted system call
即使在我终止了对象dlmopen()
和创建它们的对象之后。
有没有人遇到过这种问题?我试图改变标志,但dlmopen()
没有运气。
这是 zmq_send() 的代码:
inline size_t send (const void *buf_, size_t len_, int flags_ = 0)
{
int nbytes = zmq_send (ptr, buf_, len_, flags_);
if (nbytes >= 0)
return (size_t) nbytes;
if (zmq_errno () == EAGAIN)
return 0;
throw error_t ();
}
解决方案
推荐阅读
- python - Python 之禅“显式胜于隐式”
- c++ - c++ std::lock_guard 作用域到达
- node.js - testcafe 命令失败:“npm
- python - Python 从 API 读取并写入数组/列表
- java - java.lang.NoClassDefFoundError: com/jcraft/jsch/JSch in JAVA
- python - 替换熊猫数据框中的字符串,保持第一次出现完好无损
- swift - 更改分段控制内部填充 iOS 13
- excel - 如何下拉公式并更改 COLUMN 引用而不是 ROWS 以制作动态列表?
- python - Text 小部件 tkinter 中的标签或文本外观的更改是否有任何撤消功能?
- java - 从使用 YouTube 数据 API 的个人项目中删除 Google 未经验证的警告