如何将整个类从一个进程发送到另一个进程,避免序列化
how can i send an entire class from one process to another avoiding serialization?
在我的空闲时间编程中,我遇到了一个问题。
假设有一个大型程序 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
如果数据必须跨进程边界传递,则无法避免将数据序列化为可传输格式。 特别是如果数据包含指向其他内存甚至其自己的内部成员的任何指针/引用,因为这些指针/引用在另一个进程的地址空间中无效。
相关文章:
- 如何在C++中将函数发送到另一个进程
- 如何从另一个进程解开全局钩子?
- 如何使用带有矢量的 winapi 读取进程内存从另一个进程读取缓冲区?
- 从不同进程中的另一个线程挂起/恢复线程或进程
- 是否可以将子进程的 stdout 重定向到父进程中的另一个文件?
- 如何在MPI中将矩阵从一个进程转移到另一个进程
- 将vector<vector<double>>从x86平台中创建的一个进程发送到x64中构建的另一个进程的最快方法是什么
- 通过 c++ 中的 udp 套接字将派生类对象从一个进程发送到另一个进程
- C++ 减慢另一个正在运行的进程
- 与 Python 中子进程中的另一个应用程序的交互式会话
- 如何:监视Windows中另一个进程的文件访问?
- 是否可以注入一个进程并获取给定的句柄,然后使用它们注入另一个进程
- 尝试启动另一个进程并通过 MPI 加入它,但获得访问冲突
- 将窗口句柄从一个进程使用到另一个进程(插件 vst 音频)
- 启动另一个进程的最佳方式C++?
- 异步是否总是在C++中使用另一个线程/内核/进程
- Win32/Gdigrab - 如何将另一个进程窗口设置为无边框
- 为什么我不能用这个函数在Qt框架中打开另一个进程?
- 如何使用 C# 在 Windows 中获取另一个进程库地址
- 如何在没有窗口类的情况下编写QT系统托盘应用程序,并将其与另一个进程集成