使用GVariant发送指向另一个进程的指针

时间:2016-04-09 13:11:27

标签: webkit gtk gtk3 glib gvariant

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

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

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

1 个答案:

答案 0 :(得分:3)

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

首先是你的头衔:

  

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

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

  

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

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

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

您可能希望了解序列化