我目前正在使用webkit2gtk开发一个简单的浏览器。在webkit2gtk中,所有与DOM相关的操作都在称为WebProcess的单独进程中完成。
我在UI Process中创建了一个GTKWidget。我需要将GTKWidget结构传递给WebProcess。我们可以使用GVariant吗?
我读过GVariant apis。我可以使用GVariant发送字符串,整数和其他基本类型。但我们可以使用GVariant发送对象吗?
答案 0 :(得分:3)
所以,我们必须区分你的头衔和你的问题。
首先是你的头衔:
发送指向另一个进程的指针
是的,你可以这样做(指针通常可以转换为整数类型),但是指针总是特定于一个进程内存 - 接收者进程无法访问它,所以指针显示为虚无(你得到一个分段错误),或者更糟糕的是,显示其他东西(你的程序运行错误的数据)。
但我们可以使用GVariant发送对象吗?
一般来说,没有。您无法查看对象内部,因此它们可能包含指针。请参阅上面的评论。
然而,实际上许多对象在没有指针的情况下工作,因此类型信息和属于对象的内存足以重新创建"在接收器端,只需将接收到的内存转换为您知道的对象的形状即可。但是,这是非常特定于对象的。
您可能希望了解序列化。