问题标签 [gio]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 在 Windows 上使用 Glib 观察套接字会将它们置于非阻塞模式
以下代码在 Windows 上无法正常工作(但在 Linux 上可以):
glib 源代码中各个地方的注释片段以及其他地方提到在 Windows 中,套接字在轮询期间处于非阻塞模式。结果,回调self.outgoing_cb
被不断调用,并且写入套接字失败并显示以下错误消息:
在写作之前打电话sock.setblocking(True)
似乎并没有规避这一点。通过降低轮询的优先级并忽略错误消息,它可以按预期工作,但会引发很多事件,并消耗大量 CPU。有没有办法绕过 Windows 中的这个限制?
更新
我可能会指出,轮询的全部意义POLLOUT
在于,当您进行 write 调用时,您将不会得到EAGAIN
/ EWOULDBLOCK
。我收到的奇怪错误消息,我相信这将是这两个错误代码的 Windows 等效项。换句话说,gobject.IO_OUT
当套接字不允许我成功写入时,我会收到事件,并且将其置于阻塞模式仍然会给我这个不适当的错误。
另一个更新
在 Linux 上,这可以正常工作,套接字没有切换到非阻塞模式,我收到IO_OUT
, 当套接字让我在没有阻塞的情况下写入或抛出错误时。这是我最想在 Windows 下模拟/恢复的功能。
补充说明
来自man poll
:
来自man select
:
python - 在 python 中使用 gio 访问 samba 共享
我正在尝试制作一个简单的命令行客户端,用于通过 gio 的 Python 绑定访问共享(是的,主要要求是使用 gio)。
我可以看到,与它的前身 gnome-vfs 相比,它提供了一些进行身份验证的方法(子类化MountOperation
),甚至提供了一些非常特定于 samba 共享的方法,例如set_domain()
.
但我坚持使用这段代码:
如果该服务器需要身份验证,我认为需要调用fh.mount_enclosing_volume()
,因为此方法将 aMountOperation
作为参数。问题是调用这个方法什么都不做,fh.enumerate_children()
接下来的逻辑(列出可用共享)失败了。
任何人都可以提供一个工作示例,说明如何使用 gio 完成此操作?
python - 使用 GIO 的异步 HTTP 请求
我将欣赏一个关于如何使用 Python 的 GIO 绑定执行异步 HTTP POST 请求的示例。
编辑:在不使用 Twisted 的情况下寻求的示例。
glib - GFile 的问题
我有一个:
在我的代码中。但是当我尝试编译它时,我看到了错误:
未定义的引用:'g_file_new_for_path'
在包含部分我有#include <gio/gio.h>
这段代码有什么问题?
glib - vala FileInfo get_file_type 未知
我一直在尝试创建一个遍历目录并列出目录和任何子目录中的所有文件的函数:
当我运行此代码时,不会输出任何子目录中的文件。所有文件/目录类型都是“G_FILE_TYPE_UNKNOWN”。有谁知道如何解决这个问题或我可以使用的其他方法。
c++ - 带有 Gio 文件监视器的 gtkmm 应用程序
我需要监视多个目录的更改。我完全按照文档的建议使用Gtk::Main
、调用Gio::Init
和添加目录监视器。但是,对于任何目录,都不会调用回调。我是否需要单独用于监视器的另一个循环,如果需要,我将如何将它与 结合使用Gtk::Main
?
linux - 挂载 iPod 时的多个挂载事件
我正在开发一个必须检测存储卷是否已安装或卸载的应用程序。我正在使用GIO
它。我在听mount-added
和mount-removed
信号。当我安装/卸载笔式驱动器时,一切正常。但是,我在安装 iPod 时遇到了问题。我在挂载和卸载时分别收到两个回调。我假设其中一个GMount
对象会被遮蔽,但g_mount_is_shadowed对两者都返回 false。我如何决定处理哪个,忽略哪个?我无法同时处理两者。我必须检测与存储设备对应的挂载/卸载并仅处理它。
linux - GMount 和 GVolume
我是新手GIO
,我完全混淆GMount
和GVolume
。该GIO
参考资料说这GMount
是一个“已安装”的文件系统,您可以访问它,同时GVolume
代表可以安装的用户可见对象。我对这两种类型有几个问题。
- 挂载
GVolume
的对象是否等同于GMount
对象? - 已安装
GVolume
的对象始终与GMount
对象相关联。他们之间是什么关系? GMount
对象可能与对象相关联,也可能不相关GVolume
。什么时候与后者无关?