问题标签 [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.

0 投票
1 回答
721 浏览

c++ - 为了检测连接的 USB,我必须检查什么接口?

我正在尝试通过以下方法检测 USB 设备是否已从 qt 程序中插入或移除:http: //doc.qt.io/qt-4.8/qdbusconnection.html#connect

我当前对应类的代码如下所示:

当我跑步solid-hardware listen时,我在插入/拔出时收到以下通知:

所以我确信系统会通知 USB 记忆棒而且我现在已经使用 USB 命名接口玩了几个小时,但我的应用程序对插入/拔出记忆棒做出反应无法获得任何成功。

那么我做错了什么?接口和名称参数应该是什么connect()样的?你能解释一下他们到底是做什么的吗?

0 投票
1 回答
1624 浏览

mount - Udisk - 创建挂载点时出错,没有这样的文件或目录

我正在尝试在 linux 上自动挂载 USB 驱动器。使用所有默认设置,它可以工作,并且驱动器安装到 /run/media/ username / drivename

我尝试按照此处链接的指南将默认挂载点更改为 /media/ drivenamehttps://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 上。任何帮助表示赞赏!谢谢!

0 投票
1 回答
300 浏览

python-3.x - 如何使用 Python3 和 Udisks2 以只读方式挂载设备?

我需要(临时)使用 Python3 和 Udisks2 API 以只读方式安装设备。什么是正确的 GLib.Variant?

我创建了以下脚本以使用 USB 笔式驱动器进行测试。它假定 /dev/sdc1 作为这个设备。

这将安装设备,但它不是以只读方式安装的。

我本来希望它以只读方式安装设备,或者如果只读选项无效,至少会引发错误。

0 投票
1 回答
32 浏览

linux - 如何正确管理 g_dbus_interface_get_object() 返回的引用

我有一个应用程序,我在其中使用 UDisk 来处理一些驱动器和分区。在我的应用程序中,我有一个指向 a 的指针UDisksDrive,我需要将其转换为UDisksObject以后可以访问其他接口的指针。我不清楚我应该取消引用哪些对象以及何时取消引用。在一个功能中,我目前正在执行以下操作:

但我不知道这是否正确。它有效,但我知道这可能并不一定意味着什么。gdbus 文档的g_dbus_interface_get_object()读取就像我不应该driveObject在接收函数完成时取消引用返回的变量,但我不确定。我觉得我应该block在函数返回之前取消引用,但我不知道为什么我不这样做。这是一个我只有时间在这里和那里工作的项目,我觉得也许我已经尝试过了,但它导致了崩溃或异常。

我的大部分其他涉及 UDisk 的代码都非常简单。我_get_的东西,使用它,并取消引用它。正是这些涉及界面交换的东西,我有点模糊。

0 投票
1 回答
38 浏览

linux - 文件写入后如何确认块设备是否不再被写入?

当我完成将文件写入设备块(例如,/dev/sda)时,我必须等待一段时间以确保缓冲区仍然不再被写入设备。我必须设置回调以在完成时触发 UI 事件。

我曾尝试使用ejectableudisks2 的属性,正如文档所述,这只是一个猜测。在我的实验中它并不可靠。

我注意到当刷新完成时,我的文件管理器(Nautilus)让我卸载设备。什么 API 为我提供了这样的设备属性?

0 投票
1 回答
398 浏览

d - 如何使用 DBus 和 UDisks2 列出所有可移动设备?

我需要使用 UDisks2 列出、过滤和打开块设备。我正在尝试列出所有可移动设备。

UDisks2 提供的GetBlockDevices方法a{sv}需要一个类型。如果我没记错的话,它是字符串键和 Variant 值的 HashTable。

如何使用此信息列出设备​​?到目前为止,我尝试了以下方法:

call方法需要一个Argat 作为它的最后一个参数。我怎样才能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

0 投票
1 回答
131 浏览

rust - 如何使用 zbus 列出块设备?

我想使用名为zbus的 dbus 实现列出系统中所有可用的块设备。

UDisks2 文档提到了对org.freedesktop.UDisks2.Manager接口调用的方法调用,该接口GetBlockDevices接受IN a{sv} options, OUT ao block_objects方法参数。

使用 zbus,我写道:

据我了解,zvariant 值代表一个 DBus 变体。但是我收到以下错误:

是什么原因造成的,我该如何避免这个错误?

0 投票
1 回答
242 浏览

linux - (自动)挂载(usb-)驱动器通过来自python的udisk2 dbus api

我有一个控制音频播放器的 python 守护进程。现在我想让这个守护进程监控插入的 USB 磁盘并将它们的内容添加到 mpd 媒体库。

其中一部分是 udisk 客户端,它等待磁盘插入,然后立即挂载它们。

我想以只读方式安装磁盘,因此如果我在没有先卸载或关闭的情况下拔下磁盘,不会有任何数据损坏。

0 投票
2 回答
40 浏览

bash - 取决于错误输出的条件动作

有没有办法根据命令的错误输出执行 if 语句?

例如,我想udisksctl在安装 USB 驱动器的脚本中使用,然后对驱动器内容执行一些操作。

  1. 驱动器未安装:它应该安装它然后执行操作。
  2. 驱动器不存在:它应该抛出错误消息并退出;
  3. 驱动器已安装,它应该执行操作;

在这种情况下,运行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")似乎对输出没有任何影响。