C-创建自定义GSOURCE时如何使用串行引脚



我正在尝试编写Gsource的子类以使用串行端口事件。我发现这样做的方式是使用POSIX终端接口,使用文件描述符来工作。出于任何原因,GLIB的主要事件循环具有处理此变量的特殊方法。

正如官方文档所说,有两个Gsource抽象功能用于准备派遣,一个用于派遣,一个在FD池之前运行,一个是在FD池之前运行的。这表明可能很重要的让Glib处理文件描述符,而是在我自己的准备功能中实现此功能,但是没有类似" PIN状态更改"以与串行端口引脚一起使用的条件。关于这个我有一些问题。

  1. 为什么Glib团队的选择使库处理文件描述符?

  2. 如果我只是忽略它并在我自己的准备功能中实现它,我可以遇到一些问题吗?

  1. GSource需要处理文件描述符,因为它需要能够将其传递给poll()进行低级事件投票。
  2. 您的问题尚不清楚。忽略什么?实施什么?

我怀疑您应该只能使用使用g_unix_fd_source_new()创建的GUnixFDSource观察终端FD上的输入。在其回调(g_source_set_callback())中,您应该能够使用普通终端I/O功能从FD读取。GSource实际上只是在那里将FD集成到全局事件循环中(GMainContext)。

最新更新