如何将整个类从一个进程发送到另一个进程,避免序列化

how can i send an entire class from one process to another avoiding serialization?

本文关键字:进程 另一个 序列化 一个      更新时间:2023-10-16

在我的空闲时间编程中,我遇到了一个问题。

假设有一个大型程序 A.cpp 由我编写,还有由 bison+flex 生成的文件 B.cpp。在我运行程序 A 期间,我想执行一个解析器 (B),然后将一个非常复杂的对象返回给 A。

除了将类序列化到管道中之外,是否有任何方法可以执行此任务?

UPD 序列化的问题很简单:我无法将 boost 库与我的.cpp链接起来。

我试图重新安装libboost-dev 1.46,但链接器一直在大喊,引用没有得到满足。

我的代码如下所示:

A.cpp
class blah {
  void read () {
      yyparse();
      arch >> *this;
  }
}
B.cpp:
int main() {
   yyparse(); // yacc parsing
   arch << result;
}

我的生成文件如下所示:

bison -d -v reader.y
cp reader.tab.c bison.c
cmp -s reader.tab.h tok.h || cp reader.tab.h tok.h
g++ -O2 -std=c++0x -w -l boost_serialization  -c bison.c -o bison.o
flex -d reader.lex
cp lex.yy.c lex.c
g++ -O2 -std=c++0x -w -l boost_serialization  -c lex.c -o lex.o
g++ -O2 -std=c++0x -w -l boost_serialization  -c reader.cpp -o main.o
g++ -O2 -std=c++0x -w -l boost_serialization  bison.o lex.o main.o -o reader -lfl

如果数据必须跨进程边界传递,则无法避免将数据序列化为可传输格式。 特别是如果数据包含指向其他内存甚至其自己的内部成员的任何指针/引用,因为这些指针/引用在另一个进程的地址空间中无效。