Sur cette page

QDBusUnixFileDescriptor Class

La classe QDBusUnixFileDescriptor contient un descripteur de fichier Unix. Plus d'informations...

En-tête : #include <QDBusUnixFileDescriptor>
CMake : find_package(Qt6 REQUIRED COMPONENTS DBus)
target_link_libraries(mytarget PRIVATE Qt6::DBus)
qmake : QT += dbus

Fonctions publiques

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)

Membres publics statiques

bool isSupported()

Description détaillée

La classe QDBusUnixFileDescriptor est utilisée pour contenir un descripteur de fichier Unix à utiliser avec le module Qt D-Bus. Elle permet aux applications d'envoyer et de recevoir des descripteurs de fichiers Unix via la connexion D-Bus, en les associant automatiquement au type "h" de D-Bus.

Les objets de type QDBusUnixFileDescriptors peuvent également être utilisés comme paramètres dans les signaux et les slots qui sont exportés vers D-Bus en s'enregistrant auprès de QDBusConnection::registerObject.

QDBusUnixFileDescriptor n'est pas propriétaire du descripteur de fichier. Il utilise plutôt l'appel système Unix dup(2) pour faire une copie du descripteur de fichier. Ce descripteur de fichier appartient à l'objet QDBusUnixFileDescriptor et ne doit pas être stocké ou fermé par l'utilisateur. Vous devez plutôt faire votre propre copie si vous en avez besoin.

Disponibilité

Le passage de descripteurs de fichiers Unix n'est pas disponible dans toutes les connexions D-Bus. Cette fonctionnalité est présente avec la bibliothèque D-Bus et le démon de bus à partir de la version 1.4 sur les systèmes Unix. Qt D-Bus active automatiquement la fonctionnalité si une telle version a été trouvée à la compilation et à l'exécution.

Pour vérifier que votre connexion prend en charge le passage des descripteurs de fichiers, vérifiez si la capacité QDBusConnection::UnixFileDescriptorPassing est activée avec QDBusConnection::connectionCapabilities(). Si le drapeau n'est pas actif, vous ne pourrez pas faire d'appels à des méthodes ayant QDBusUnixFileDescriptor comme arguments ou même intégrer un tel type dans une variante. Vous ne recevrez pas non plus d'appels contenant ce type.

Notez également que les applications distantes peuvent ne pas prendre en charge le passage de descripteurs de fichiers Unix. Si vous envoyez un D-Bus à une application distante qui ne peut pas recevoir un tel type, vous recevrez une réponse d'erreur. Si vous essayez d'envoyer un signal contenant un descripteur de fichier D-Bus ou d'en renvoyer un à partir d'un appel de méthode, le message sera abandonné silencieusement.

Même si la fonctionnalité n'est pas disponible, QDBusUnixFileDescriptor continuera à fonctionner, de sorte que le code n'a pas besoin de vérifier la disponibilité de cette fonctionnalité à la compilation.

Sur les systèmes non-Unix, QDBusUnixFileDescriptor signalera toujours un état invalide et QDBusUnixFileDescriptor::isSupported() renverra false.

Voir également QDBusConnection::ConnectionCapabilities et QDBusConnection::connectionCapabilities().

Documentation des fonctions membres

QDBusUnixFileDescriptor::QDBusUnixFileDescriptor()

Construit un QDBusUnixFileDescriptor sans descripteur de fichier enveloppé. Cela équivaut à construire l'objet avec un descripteur de fichier invalide (comme -1).

Voir aussi fileDescriptor() et isValid().

[explicit] QDBusUnixFileDescriptor::QDBusUnixFileDescriptor(int fileDescriptor)

Construit un objet QDBusUnixFileDescriptor en copiant le paramètre fileDescriptor. Le descripteur de fichier original n'est pas touché et doit être fermé par l'utilisateur.

Notez que la valeur renvoyée par fileDescriptor() sera différente du paramètre fileDescriptor transmis.

Si le paramètre fileDescriptor n'est pas valide, isValid() renverra false et fileDescriptor() renverra -1.

Voir aussi setFileDescriptor() et fileDescriptor().

QDBusUnixFileDescriptor::QDBusUnixFileDescriptor(const QDBusUnixFileDescriptor &other)

Construit un objet QDBusUnixFileDescriptor en copiant other.

[noexcept] QDBusUnixFileDescriptor::~QDBusUnixFileDescriptor()

Détruit cet objet QDBusUnixFileDescriptor et se débarrasse du descripteur de fichier Unix qu'il contenait.

int QDBusUnixFileDescriptor::fileDescriptor() const

Renvoie le descripteur de fichier Unix contenu dans cet objet QDBusUnixFileDescriptor. Un descripteur de fichier non valide est représenté par la valeur -1.

Notez que le descripteur de fichier renvoyé par cette fonction appartient à l'objet QDBusUnixFileDescriptor et ne doit pas être stocké au-delà de la durée de vie de cet objet. Il est possible de l'utiliser tant que cet objet est valide, mais si l'on souhaite le stocker pour une utilisation plus longue, le descripteur de fichier doit être cloné à l'aide des fonctions Unix dup(2), dup2(2) ou dup3(2).

Voir également setFileDescriptor() et isValid().

[static] bool QDBusUnixFileDescriptor::isSupported()

Renvoie true si les descripteurs de fichiers Unix sont pris en charge sur cette plate-forme. En d'autres termes, cette fonction renvoie true s'il s'agit d'une plate-forme Unix.

Notez que QDBusUnixFileDescriptor continue à fonctionner même si cette fonction renvoie false. La seule différence est que les objets QDBusUnixFileDescriptor seront toujours dans l'état isValid() == false et que fileDescriptor() renverra toujours -1. La classe ne consomme aucune ressource du système d'exploitation.

bool QDBusUnixFileDescriptor::isValid() const

Renvoie true si ce descripteur de fichier Unix est valide. Un descripteur de fichier Unix valide n'est pas -1.

Voir aussi fileDescriptor().

void QDBusUnixFileDescriptor::setFileDescriptor(int fileDescriptor)

Définit le descripteur de fichier que cet objet QDBusUnixFileDescriptor détient comme une copie de fileDescriptor. Le descripteur de fichier original n'est pas touché et doit être fermé par l'utilisateur.

Notez que la valeur renvoyée par fileDescriptor() sera différente du paramètre fileDescriptor transmis.

Si le paramètre fileDescriptor n'est pas valide, isValid() renverra false et fileDescriptor() renverra -1.

Voir aussi isValid() et fileDescriptor().

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

Remplace cette instance de descripteur de fichier par other. Cette opération est très rapide et n'échoue jamais.

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

Move-assigns other to this QDBusUnixFileDescriptor.

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

Copie le descripteur de fichier Unix de l'objet other QDBusUnixFileDescriptor . Si l'objet actuel contenait un descripteur de fichier, il sera éliminé correctement avant.

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