1

我目前正在使用 webkit2gtk 开发一个简单的浏览器。在 webkit2gtk 中,所有与 DOM 相关的操作都在称为 WebProcess 的单独进程中完成。

我在 UI 进程中创建了一个 GTKWidget。我需要将 GTKWidget 结构传递给 WebProcess。我们可以使用 GVariant 吗?

我读过 GVariant api。我能够使用 GVariant 发送字符串、整数和其他基本类型。但是我们可以使用 GVariant 发送对象吗?

4

1 回答 1

3

所以,我们必须区分你的标题和你的问题。

首先你的标题:

发送指向另一个进程的指针

是的,你可以这样做(指针通常可以转换为整数类型),但是指针总是特定于一个进程的内存——接收进程无权访问它,所以指针显示为虚无(你得到一个分段错误),或者更糟的是,其他的东西(你的程序运行时使用了错误的数据)。

但是我们可以使用 GVariant 发送对象吗?

一般来说,没有。您无法查看对象内部,因此它们可能包含指针。请参阅我上面的评论。

然而,许多对象实际上在没有指针的情况下工作,因此属于一个对象的类型信息和内存足以在接收方“重新创建”它,只需将接收到的内存转换为您知道的对象的形状即可. 但是,这是非常特定于对象的。

您可能会喜欢阅读有关序列化的内容。

于 2016-04-09T13:18:20.390 回答