Auf dieser Seite

QDBusUnixFileDescriptor Class

Die Klasse „QDBusUnixFileDescriptor“ enthält einen Unix-Dateideskriptor. Mehr...

Header: #include <QDBusUnixFileDescriptor>
CMake: find_package(Qt6 REQUIRED COMPONENTS DBus)
target_link_libraries(mytarget PRIVATE Qt6::DBus)
qmake: QT += dbus

Ö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()

Ausführliche Beschreibung

Die Klasse `QDBusUnixFileDescriptor` dient zur Speicherung eines Unix-Dateideskriptors zur Verwendung mit dem Modul ` Qt D-Bus `. Dadurch können Anwendungen Unix-Dateideskriptoren über die D-Bus-Verbindung senden und empfangen, wobei diese automatisch dem D-Bus-Typ „h“ zugeordnet werden.

Objekte vom Typ `QDBusUnixFileDescriptor` können auch als Parameter in Signalen und Slots verwendet werden, die durch Registrierung bei ` QDBusConnection::registerObject` an D-Bus exportiert werden.

QDBusUnixFileDescriptor übernimmt nicht die Kontrolle über den Dateideskriptor. Stattdessen verwendet es den Unix-Systemaufruf ` dup(2) `, um eine Kopie des Dateideskriptors zu erstellen. Dieser Dateideskriptor gehört zum QDBusUnixFileDescriptor-Objekt und sollte vom Benutzer weder gespeichert noch geschlossen werden. Stattdessen sollten Sie bei Bedarf eine eigene Kopie erstellen.

Verfügbarkeit

Die Übergabe von Unix-Dateideskriptoren ist nicht in allen D-Bus-Verbindungen verfügbar. Diese Funktion ist in der D-Bus-Bibliothek und im Bus-Daemon ab Version 1.4 auf Unix-Systemen vorhanden. ` Qt D-Bus ` aktiviert die Funktion automatisch, wenn eine solche Version zur Kompilierungs- und Laufzeit gefunden wurde.

Um zu überprüfen, ob Ihre Verbindung die Übergabe von Dateideskriptoren unterstützt, prüfen Sie mit ` QDBusConnection::connectionCapabilities()` (), ob die Fähigkeit ` QDBusConnection::UnixFileDescriptorPassing ` gesetzt ist. Ist das Flag nicht aktiv, können Sie keine Methoden aufrufen, die `QDBusUnixFileDescriptor` als Argumente haben, oder einen solchen Typ in eine Variante einbetten. Sie erhalten auch keine Aufrufe, die diesen Typ enthalten.

Beachten Sie außerdem, dass Remote-Anwendungen die Übergabe von Unix-Dateideskriptoren möglicherweise nicht unterstützen. Wenn Sie eine D-Bus-Anfrage an eine Remote-Anwendung senden, die einen solchen Typ nicht empfangen kann, erhalten Sie eine Fehlerantwort. 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.

Auch wenn die Funktion nicht verfügbar ist, funktioniert `QDBusUnixFileDescriptor` weiterhin, sodass der Code keine Kompilierungszeitprüfungen auf die Verfügbarkeit dieser Funktion enthalten muss.

Auf Nicht-Unix-Systemen meldet `QDBusUnixFileDescriptor` stets einen ungültigen Zustand, und ` QDBusUnixFileDescriptor::isSupported()` gibt `false` zurück.

Siehe auch „ QDBusConnection::ConnectionCapabilities “ und „ QDBusConnection::connectionCapabilities()“.

Dokumentation zu den Member-Funktionen

QDBusUnixFileDescriptor::QDBusUnixFileDescriptor()

Erstellt einen `QDBusUnixFileDescriptor` ohne einen umschlossenen Dateideskriptor. Dies entspricht der Erstellung des Objekts mit einem ungültigen Dateideskriptor (z. B. -1).

Siehe auch „ fileDescriptor()“ und „ isValid()“.

[explicit] QDBusUnixFileDescriptor::QDBusUnixFileDescriptor(int fileDescriptor)

Erstellt ein QDBusUnixFileDescriptor-Objekt, indem der Parameter „ fileDescriptor “ kopiert wird. Der ursprüngliche Dateideskriptor bleibt unverändert und muss vom Benutzer geschlossen werden.

Beachten Sie, dass sich der von ` fileDescriptor()` zurückgegebene Wert von dem übergebenen Parameter ` fileDescriptor ` unterscheidet.

Ist der Parameter ` fileDescriptor ` ungültig, gibt ` isValid()` den Wert `false` zurück und ` fileDescriptor()` den Wert `-1`.

Siehe auch setFileDescriptor() und fileDescriptor().

QDBusUnixFileDescriptor::QDBusUnixFileDescriptor(const QDBusUnixFileDescriptor &other)

Erstellt ein `QDBusUnixFileDescriptor`-Objekt, indem ` other` kopiert wird.

[noexcept] QDBusUnixFileDescriptor::~QDBusUnixFileDescriptor()

Löscht dieses ` QDBusUnixFileDescriptor `-Objekt und gibt den darin enthaltenen Unix-Dateideskriptor frei.

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 verwenden, solange dieses Objekt gültig ist. Wenn man ihn jedoch für eine längere Nutzung speichern möchte, sollte der Dateideskriptor mithilfe der 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 “ auch dann weiterläuft, wenn diese Funktion „ false “ zurückgibt. Der einzige Unterschied besteht darin, dass sich die Objekte von „ QDBusUnixFileDescriptor “ stets im Zustand „ isValid() == false“ befinden und „ fileDescriptor()“ stets den Wert -1 zurückgibt. Die Klasse verbraucht keine Betriebssystemressourcen.

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 bleibt unverändert und muss vom Benutzer geschlossen werden.

Beachten Sie, dass der von ` fileDescriptor()` zurückgegebene Wert sich von dem übergebenen Parameter ` fileDescriptor ` unterscheidet.

Ist der Parameter ` fileDescriptor ` ungültig, gibt ` isValid()` den Wert `false` zurück und ` fileDescriptor()` den Wert `-1`.

Siehe auch isValid() und fileDescriptor().

[noexcept] void QDBusUnixFileDescriptor::swap(QDBusUnixFileDescriptor &other)

Tauscht diese Dateideskriptor-Instanz gegen „ other “ aus. Dieser Vorgang ist sehr schnell und schlägt niemals fehl.

[noexcept] QDBusUnixFileDescriptor &QDBusUnixFileDescriptor::operator=(QDBusUnixFileDescriptor &&other)

Weist other diesem QDBusUnixFileDescriptor zu.

QDBusUnixFileDescriptor &QDBusUnixFileDescriptor::operator=(const QDBusUnixFileDescriptor &other)

Kopiert den Unix-Dateideskriptor aus dem Objekt „ other “ ( QDBusUnixFileDescriptor ). Falls das aktuelle Objekt einen Dateideskriptor enthielt, wird dieser zuvor ordnungsgemäß entsorgt.

© 2026 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.