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