1

是否可以在一个父进程模型中为 IPC 使用 glib 事件循环和 glib io 通道?

父母和孩子必须能够互相发送“命令”。

你能指点我一些教程或例子吗?

4

1 回答 1

4

是的。但它本身并不包含完整的 IPC 解决方案,并且可能无法与现有的每个 IPC 实现完美兼容。对于父母和孩子,我猜你的意思是服务器和客户端?通常,您打开某种网络连接或创建通信管道并获得文件描述符(即使您使用隐藏它的高级库)。您可以将此文件描述符传递给 glib 并获取回调,然后数据可供读取(或连接关闭)。一些流行的 IPC 方法,如CORBADBUS ,已经集成了 glib,因此您甚至不需要担心文件描述符等。glib 事件循环在此处描述. 与直接使用 poll() 相比,它可能看起来非常复杂,但另一方面它非常便携。

基本用法是使用 g_source_new() 创建源并使用 g_source_attach() 将其添加到主上下文中,然后使用 g_source_add_poll() 将文件描述符添加到源中。

如果您还没有决定使用 glib,您可能想查看libevent与 glib 做同样的事情,但(恕我直言)更容易使用。它在处理 1000 多个同时客户端方面也明显更好(至少在 Linux 中,其他操作系统甚至可能不支持)。但另一方面,它的便携性不高,可能只能在相当 posix 兼容的系统上工作。

于 2010-06-30T02:56:15.733 回答