两个独立的程序使用一个公共库,允许它们:
我的测试用例是:
my_callback()
注册到事件1,我已经确认:
0x400d80
)0x400d80
)。尝试从A实际运行B的回调时发生的事情是分段错误。
是不是可以从A调用B的回调,即使这些是单独的进程?感觉A正在抱怨试图在别人的沙箱中运行某些东西。
如何让程序A调用B中的函数?
以下是调用与给定事件关联的所有回调的代码(在lib的signal()
中):
for (int i = 0; i < event_list[event].nb_callbacks; ++i) {
printf("callback %d address: %p\n", i, event_list[event].callbacks[i]);
if (event_list[event].callbacks[i] != NULL) {
event_list[event].callbacks[i]();
} else {
fprintf(stderr, "Warning: registered callback is NULL\n");
}
}
以下是我如何注册回调地址(程序B):
static bool event_occured = false;
void on_signal_input(void);
int main()
{
// ...
if (event_register(evd, EVENT_TEST_1, on_signal_input) < 0) {
fprintf(stderr, "Error: event_register\n");
return -1;
}
// ...
}
void on_signal_input(void)
{
printf("event occured\n");
event_occured = true;
}