【问题标题】:How to create a multi-process webkitgtk application (Vala)?如何创建多进程 webkitgtk 应用程序(Vala)?
【发布时间】:2010-08-29 22:10:08
【问题描述】:

我想用 webkit 在 Vala 中制作一个网络浏览器。

但是,我不知道如何使它成为多进程。

我希望每个选项卡都有自己的进程。

如何使用 Vala 和 Gtk+ 来做到这一点。

感谢您的回答。

【问题讨论】:

    标签: webkit vala


    【解决方案1】:

    查看Gtk.PlugGtk.Socket。您需要在打开的每个选项卡中添加Gtk.Socket。然后使用GLib.Process 函数之一生成一个进程,并在该进程中构造一个包含WebViewGtk.Plug。然后,您将需要某种进程间通信方式,一方面将您的插头连接到您的套接字,并将命令从您的用户界面传递到 web 视图(例如“使字体变大”)。

    看起来 Vala 文档没有包含太多解释,您可能需要查看 C documentation 以了解有关插头和插座如何工作的更多信息。

    编辑:

    您要求提供有关进程间通信的更多信息。有几种方法,我不确定哪一种最适合您。也许您可以尝试GLib.Process.spawn_async_with_pipes() 来启动您的子进程并获取子进程标准输入和输出的文件描述符。然后,您可以将这些文件描述符传递给GLib.IOChannel.unix_new(),以便在您的进程之间来回传递消息。

    另一种方法是使用 DBus,但这种方法更复杂,文档也更少。

    【讨论】:

    • 您好,感谢您的回答。我不知道如何使用 Glib.Process。我跟着一个关于插头和插座的教程(gtkmm book - library.gnome.org/devel/gtkmm-tutorial/unstable/…),但是传输窗口ID的方式不是很合适(在文件中)。那么,如何使用 Glib.Process 在两个进程之间进行通信?我这样做是为了启动另一个进程(C++): list myList; myList.push_back("../Plug/Plug"); Glib::spawn_async(".", myList);它启动了该过程,但是我想在它们之间进行通信。如何 ?感谢您的回答。
    【解决方案2】:

    您可能想要使用GtkPlug,请参阅此discussion in Vala-list (和gtk forum)。

    【讨论】:

      猜你喜欢
      • 2015-08-20
      • 1970-01-01
      • 1970-01-01
      • 2017-06-16
      • 2012-07-29
      • 1970-01-01
      • 2013-08-20
      • 1970-01-01
      • 2020-05-15
      相关资源
      最近更新 更多