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

时间:2013-12-19 01:23:29

标签: c++ unix protocols

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

我们说,有一个由我编写的大型程序 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;
}

我的makefile如下所示:

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

1 个答案:

答案 0 :(得分:1)

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