我想要实现2个独立的进程,A持续运行,B随时运行,B的函数通过A中得条件触发。
因为B中的函数触发后,还会执行B中的其他相关函数,所以单独的把B的触发函数写成动态链接库在A中调用是不行的。B是一个独立的逻辑,除非把整个B都写到A里面去,这就与初衷相悖了。
先想到的是共享内存,研究后发现在共享内存区域存储函数指针没有意义,不同进程的虚拟地址空间是相互隔离的,即使两个进程的函数指针地址看起来相同,它们实际上指向的是不同的内存地址。因此,直接在进程A中使用进程B中的函数指针地址是不可行的。
不能直接调用函数,那么就无法做到条件满足时实时触发。
一个比较笨的办法是A中发出信号,B在while循环下不断检测信号。一般用共享内存来实现,也可以用管道、信号量、套接字。