问题标签 [udisks]
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.
c++ - 为了检测连接的 USB,我必须检查什么接口?
我正在尝试通过以下方法检测 USB 设备是否已从 qt 程序中插入或移除:http: //doc.qt.io/qt-4.8/qdbusconnection.html#connect
我当前对应类的代码如下所示:
当我跑步solid-hardware listen
时,我在插入/拔出时收到以下通知:
所以我确信系统会通知 USB 记忆棒而且我现在已经使用 USB 命名接口玩了几个小时,但我的应用程序对插入/拔出记忆棒做出反应无法获得任何成功。
那么我做错了什么?接口和名称参数应该是什么connect()
样的?你能解释一下他们到底是做什么的吗?
mount - Udisk - 创建挂载点时出错,没有这样的文件或目录
我正在尝试在 linux 上自动挂载 USB 驱动器。使用所有默认设置,它可以工作,并且驱动器安装到 /run/media/ username / drivename。
我尝试按照此处链接的指南将默认挂载点更改为 /media/ drivename:https://wiki.archlinux.org/index.php/Udisks#Mount_to_/media_(udisks2)
我添加了/etc/udev/rules.d/99-udisks2.rules
包含以下内容的文件:
然后我重新启动了我的机器。现在每次我尝试访问驱动器时,都会出现以下错误:
无法挂载驱动器名
创建挂载点“/media/drivename”时出错:没有这样的文件或目录
如果我删除我创建的文件并再次重新启动,驱动器将像正常一样安装到 /run/media/ username / drivename,我可以正常访问它们。
我在 Arch linux 上。任何帮助表示赞赏!谢谢!
python-3.x - 如何使用 Python3 和 Udisks2 以只读方式挂载设备?
我需要(临时)使用 Python3 和 Udisks2 API 以只读方式安装设备。什么是正确的 GLib.Variant?
我创建了以下脚本以使用 USB 笔式驱动器进行测试。它假定 /dev/sdc1 作为这个设备。
这将安装设备,但它不是以只读方式安装的。
我本来希望它以只读方式安装设备,或者如果只读选项无效,至少会引发错误。
linux - 如何正确管理 g_dbus_interface_get_object() 返回的引用
我有一个应用程序,我在其中使用 UDisk 来处理一些驱动器和分区。在我的应用程序中,我有一个指向 a 的指针UDisksDrive
,我需要将其转换为UDisksObject
以后可以访问其他接口的指针。我不清楚我应该取消引用哪些对象以及何时取消引用。在一个功能中,我目前正在执行以下操作:
但我不知道这是否正确。它有效,但我知道这可能并不一定意味着什么。gdbus 文档的g_dbus_interface_get_object()
读取就像我不应该driveObject
在接收函数完成时取消引用返回的变量,但我不确定。我觉得我应该block
在函数返回之前取消引用,但我不知道为什么我不这样做。这是一个我只有时间在这里和那里工作的项目,我觉得也许我已经尝试过了,但它导致了崩溃或异常。
我的大部分其他涉及 UDisk 的代码都非常简单。我_get_
的东西,使用它,并取消引用它。正是这些涉及界面交换的东西,我有点模糊。
linux - 文件写入后如何确认块设备是否不再被写入?
当我完成将文件写入设备块(例如,/dev/sda
)时,我必须等待一段时间以确保缓冲区仍然不再被写入设备。我必须设置回调以在完成时触发 UI 事件。
我曾尝试使用ejectable
udisks2 的属性,正如文档所述,这只是一个猜测。在我的实验中它并不可靠。
我注意到当刷新完成时,我的文件管理器(Nautilus)让我卸载设备。什么 API 为我提供了这样的设备属性?
d - 如何使用 DBus 和 UDisks2 列出所有可移动设备?
我需要使用 UDisks2 列出、过滤和打开块设备。我正在尝试列出所有可移动设备。
UDisks2 提供的GetBlockDevices
方法a{sv}
需要一个类型。如果我没记错的话,它是字符串键和 Variant 值的 HashTable。
如何使用此信息列出设备?到目前为止,我尝试了以下方法:
该call
方法需要一个Arg
at 作为它的最后一个参数。我怎样才能a{sv}
在那里提供?
我正在使用ddbus
图书馆。
对于 args,我使用Variant!string[string]
Variant 本身是一个模板类型。我还从调用方法参数中删除了多余的“org.freedesktop.DBus”。
但是我收到以下错误:
ddbus.exception.DBusException@../../.dub/packages/ddbus-2.3.0/ddbus/source/ddbus/thin.d(833):org.freedesktop.DBus 不理解消息 GetBlockDevices
rust - 如何使用 zbus 列出块设备?
我想使用名为zbus的 dbus 实现列出系统中所有可用的块设备。
UDisks2 文档提到了对org.freedesktop.UDisks2.Manager
接口调用的方法调用,该接口GetBlockDevices
接受IN a{sv} options, OUT ao block_objects
方法参数。
使用 zbus,我写道:
据我了解,zvariant 值代表一个 DBus 变体。但是我收到以下错误:
是什么原因造成的,我该如何避免这个错误?
linux - (自动)挂载(usb-)驱动器通过来自python的udisk2 dbus api
我有一个控制音频播放器的 python 守护进程。现在我想让这个守护进程监控插入的 USB 磁盘并将它们的内容添加到 mpd 媒体库。
其中一部分是 udisk 客户端,它等待磁盘插入,然后立即挂载它们。
我想以只读方式安装磁盘,因此如果我在没有先卸载或关闭的情况下拔下磁盘,不会有任何数据损坏。
bash - 取决于错误输出的条件动作
有没有办法根据命令的错误输出执行 if 语句?
例如,我想udisksctl
在安装 USB 驱动器的脚本中使用,然后对驱动器内容执行一些操作。
- 驱动器未安装:它应该安装它然后执行操作。
- 驱动器不存在:它应该抛出错误消息并退出;
- 驱动器已安装,它应该执行操作;
在这种情况下,运行udisksctl
可能会产生三种结果:
在情况 1) 中,它运行成功。
在其他两种情况下,它会返回错误,但是:
- 在案例 2)中,它给了我错误:
Error looking up object for device ...
- 在案例 3) 中,它给了我错误:
Error mounting /dev/sdb1: GDBus.Error:org.freedesktop.UDisks2.Error.AlreadyMounted: Device /dev/sdb1 is already mounted at
是否有一种优雅的方式来制作一个 if 语句,该语句根据这两个错误消息采取不同的操作?
像这样将错误消息传递给 grepudisksctl mount -b /dev/disk/by-label/CRUZER 2> >(grep -i "Error looking up object for device")
似乎对输出没有任何影响。