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