2016-04-09 10 views
1

Ich entwickle gerade einen einfachen Browser mit webkit2gtk. In webkit2gtk werden alle DOM-bezogenen Vorgänge in einem separaten Prozess namens WebProcess ausgeführt.Zeiger mit GVariant auf einen anderen Prozess senden

Ich habe ein GTKWidget im UI-Prozess erstellt. Ich muss die GTKWidget-Struktur an WebProcess übergeben. Können wir GVariant dafür verwenden?

Ich habe GVariant Apis gelesen. Ich bin in der Lage, String, Integer und andere Grundtypen mit GVariant zu senden. Aber können wir Objekte mit GVariant senden?

Antwort

3

Also, wir müssen zwischen Ihrem Titel und Ihrer Frage unterscheiden.

zuerst Ihr Titel:

Senden Zeiger auf einen anderen Prozess

ja, können Sie das tun (Zeiger in der Regel umwandelbar sind, in einen Integer-Typ), aber Zeiger sind immer begünstigtes Verfahren jemandes Speicher - der Empfängerprozess hat keinen Zugriff darauf, also zeigt der Zeiger ins Nichts (Sie erhalten einen Segmentierungsfehler) oder schlimmer, zu etwas anderem (Ihr Programm läuft mit falschen Daten).

Aber können wir Objekte mit GVariant senden?

Im Allgemeinen keine. Sie können nicht in Objekte hineinschauen, daher können sie Zeiger enthalten. Siehe meinen obigen Kommentar.

Allerdings arbeiten viele Objekte tatsächlich ohne Zeiger, so dass die Typinformation und der Speicher, der zu einem Objekt gehört, ausreichen, um es auf der Empfängerseite zu "reproduzieren", indem einfach der empfangene Speicher in die Form des Objekts umgewandelt wird Du weißt es ist. Das ist jedoch sehr objektspezifisch.

Sie werden wahrscheinlich gerne über Serialisierung lesen.

Verwandte Themen