QDBusUnixFileDescriptor Class
Die Klasse QDBusUnixFileDescriptor enthält einen Unix-Dateideskriptor. Mehr...
Kopfzeile: | #include <QDBusUnixFileDescriptor> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS DBus) target_link_libraries(mytarget PRIVATE Qt6::DBus) |
qmake: | QT += dbus |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QDBusUnixFileDescriptor ist Teil von Implicitly Shared Classes.
Öffentliche Funktionen
QDBusUnixFileDescriptor() | |
QDBusUnixFileDescriptor(int fileDescriptor) | |
QDBusUnixFileDescriptor(const QDBusUnixFileDescriptor &other) | |
~QDBusUnixFileDescriptor() | |
int | fileDescriptor() const |
bool | isValid() const |
void | setFileDescriptor(int fileDescriptor) |
void | swap(QDBusUnixFileDescriptor &other) |
QDBusUnixFileDescriptor & | operator=(QDBusUnixFileDescriptor &&other) |
QDBusUnixFileDescriptor & | operator=(const QDBusUnixFileDescriptor &other) |
Statische öffentliche Mitglieder
bool | isSupported() |
Detaillierte Beschreibung
Die Klasse QDBusUnixFileDescriptor wird verwendet, um einen Unix-Dateideskriptor für die Verwendung mit dem Modul Qt D-Bus zu speichern. Dies ermöglicht es Anwendungen, Unix-Dateideskriptoren über die D-Bus-Verbindung zu senden und zu empfangen, wobei sie automatisch auf den D-Bus-Typ 'h' abgebildet werden.
Objekte vom Typ QDBusUnixFileDescriptors können auch als Parameter in Signalen und Slots verwendet werden, die durch Registrierung bei QDBusConnection::registerObject an den D-Bus exportiert werden.
QDBusUnixFileDescriptor übernimmt nicht das Eigentum an dem Dateideskriptor. Stattdessen verwendet er den Unix-Systemaufruf dup(2)
, um eine Kopie des Dateideskriptors zu erstellen. Dieser Dateideskriptor gehört zum QDBusUnixFileDescriptor Objekt und sollte nicht vom Benutzer gespeichert oder geschlossen werden. Stattdessen sollten Sie Ihre eigene Kopie erstellen, wenn Sie diese benötigen.
Verfügbarkeit
Die Übergabe von Unix-Dateideskriptoren ist nicht in allen D-Bus-Verbindungen verfügbar. Diese Funktion ist mit der D-Bus-Bibliothek und dem Bus-Daemon ab Version 1.4 auf Unix-Systemen verfügbar. Qt D-Bus aktiviert die Funktion automatisch, wenn eine solche Version bei der Kompilierung und zur Laufzeit gefunden wurde.
Um zu überprüfen, ob Ihre Verbindung die Übergabe von Dateideskriptoren unterstützt, prüfen Sie, ob die Fähigkeit QDBusConnection::UnixFileDescriptorPassing mit QDBusConnection::connectionCapabilities() gesetzt ist. Wenn das Flag nicht aktiv ist, können Sie keine Methoden aufrufen, die QDBusUnixFileDescriptor als Argumente haben oder sogar einen solchen Typ in eine Variante einbetten. Sie werden auch keine Aufrufe erhalten, die diesen Typ enthalten.
Beachten Sie auch, dass entfernte Anwendungen möglicherweise keine Unterstützung für die Übergabe von Unix-Dateideskriptoren haben. Wenn Sie einen D-Bus an eine entfernte Anwendung senden, die einen solchen Typ nicht empfangen kann, werden Sie eine Fehlerantwort erhalten. Wenn Sie versuchen, ein Signal zu senden, das einen D-Bus-Dateideskriptor enthält, oder einen solchen aus einem Methodenaufruf zurückzugeben, wird die Nachricht stillschweigend verworfen.
Selbst wenn die Funktion nicht verfügbar ist, arbeitet QDBusUnixFileDescriptor weiter, so dass Code keine Kompilierzeitüberprüfung auf die Verfügbarkeit dieser Funktion haben muss.
Auf Nicht-Unix-Systemen wird QDBusUnixFileDescriptor immer einen ungültigen Zustand melden und QDBusUnixFileDescriptor::isSupported() wird false zurückgeben.
Siehe auch QDBusConnection::ConnectionCapabilities und QDBusConnection::connectionCapabilities().
Dokumentation der Mitgliedsfunktionen
QDBusUnixFileDescriptor::QDBusUnixFileDescriptor()
Konstruiert einen QDBusUnixFileDescriptor ohne einen umschlossenen Dateideskriptor. Dies ist äquivalent zur Konstruktion des Objekts mit einem ungültigen Dateideskriptor (wie -1).
Siehe auch fileDescriptor() und isValid().
[explicit]
QDBusUnixFileDescriptor::QDBusUnixFileDescriptor(int fileDescriptor)
Konstruiert ein QDBusUnixFileDescriptor-Objekt durch Kopieren des fileDescriptor Parameters. Der ursprüngliche Dateideskriptor wird nicht berührt und muss vom Benutzer geschlossen werden.
Beachten Sie, dass der von fileDescriptor() zurückgegebene Wert sich von dem übergebenen fileDescriptor Parameter unterscheidet.
Wenn der Parameter fileDescriptor ungültig ist, gibt isValid() den Wert false und fileDescriptor() den Wert -1 zurück.
Siehe auch setFileDescriptor() und fileDescriptor().
QDBusUnixFileDescriptor::QDBusUnixFileDescriptor(const QDBusUnixFileDescriptor &other)
Konstruiert ein QDBusUnixFileDescriptor Objekt durch Kopieren von other.
[noexcept]
QDBusUnixFileDescriptor::~QDBusUnixFileDescriptor()
Zerstört dieses QDBusUnixFileDescriptor Objekt und entsorgt den darin enthaltenen Unix-Dateideskriptor.
int QDBusUnixFileDescriptor::fileDescriptor() const
Gibt den Unix-Dateideskriptor zurück, der in diesem QDBusUnixFileDescriptor Objekt enthalten ist. Ein ungültiger Dateideskriptor wird durch den Wert -1 dargestellt.
Beachten Sie, dass der von dieser Funktion zurückgegebene Dateideskriptor Eigentum des QDBusUnixFileDescriptor Objekts ist und nicht über die Lebensdauer dieses Objekts hinaus gespeichert werden darf. Es ist in Ordnung, ihn zu benutzen, solange dieses Objekt gültig ist, aber wenn man ihn für längere Zeit speichern will, sollte der Dateideskriptor mit den Unix-Funktionen dup(2)
, dup2(2)
oder dup3(2)
geklont werden.
Siehe auch setFileDescriptor() und isValid().
[static]
bool QDBusUnixFileDescriptor::isSupported()
Gibt true
zurück, wenn Unix-Dateideskriptoren auf dieser Plattform unterstützt werden. Mit anderen Worten, diese Funktion gibt true
zurück, wenn es sich um eine Unix-Plattform handelt.
Beachten Sie, dass QDBusUnixFileDescriptor weiterhin funktioniert, auch wenn diese Funktion false
zurückgibt. Der einzige Unterschied besteht darin, dass sich die Objekte QDBusUnixFileDescriptor immer im Zustand isValid() == false befinden und fileDescriptor() immer -1 zurückgibt. Die Klasse verbraucht keine Ressourcen des Betriebssystems.
bool QDBusUnixFileDescriptor::isValid() const
Gibt true
zurück, wenn dieser Unix-Dateideskriptor gültig ist. Ein gültiger Unix-Dateideskriptor ist nicht -1.
Siehe auch fileDescriptor().
void QDBusUnixFileDescriptor::setFileDescriptor(int fileDescriptor)
Setzt den Dateideskriptor, den dieses QDBusUnixFileDescriptor Objekt enthält, auf eine Kopie von fileDescriptor. Der ursprüngliche Dateideskriptor wird nicht berührt und muss vom Benutzer geschlossen werden.
Beachten Sie, dass sich der von fileDescriptor() zurückgegebene Wert von dem übergebenen Parameter fileDescriptor unterscheidet.
Wenn der Parameter fileDescriptor ungültig ist, gibt isValid() false und fileDescriptor() -1 zurück.
Siehe auch isValid() und fileDescriptor().
[noexcept]
void QDBusUnixFileDescriptor::swap(QDBusUnixFileDescriptor &other)
Tauscht diese Dateideskriptor-Instanz mit other aus. Dieser Vorgang ist sehr schnell und schlägt nie fehl.
[noexcept]
QDBusUnixFileDescriptor &QDBusUnixFileDescriptor::operator=(QDBusUnixFileDescriptor &&other)
Verschieben - ordnet other dieser QDBusUnixFileDescriptor zu.
QDBusUnixFileDescriptor &QDBusUnixFileDescriptor::operator=(const QDBusUnixFileDescriptor &other)
Kopiert den Unix-Dateideskriptor aus dem Objekt other QDBusUnixFileDescriptor . Wenn das aktuelle Objekt einen Dateideskriptor enthielt, wird dieser zuvor ordnungsgemäß entsorgt.
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.