Sur cette page

QDBusUnixFileDescriptor Class

La classe `QDBusUnixFileDescriptor` contient un descripteur de fichier Unix. En savoir plus...

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 sert à contenir un descripteur de fichier Unix destiné à être utilisé avec le module Qt D-Bus. Cela permet aux applications d’envoyer et de recevoir des descripteurs de fichier Unix via la connexion D-Bus, ceux-ci étant automatiquement mappés au type D-Bus « h ».

Les objets de type QDBusUnixFileDescriptor peuvent également être utilisés comme paramètres dans les signaux et les slots exportés vers D-Bus via l'enregistrement auprès de ` QDBusConnection::registerObject`.

QDBusUnixFileDescriptor ne prend pas possession du descripteur de fichier. À la place, il utilise l'appel système Unix ` dup(2) ` pour créer une copie du descripteur de fichier. Ce descripteur de fichier appartient à l'objet `QDBusUnixFileDescriptor` et ne doit pas être stocké ni fermé par l'utilisateur. Si vous en avez besoin, vous devez plutôt créer votre propre copie.

Disponibilité

Le passage des descripteurs de fichiers Unix n’est pas disponible dans toutes les connexions D-Bus. Cette fonctionnalité est présente dans la bibliothèque D-Bus et le démon de bus à partir de la version 1.4 sur les systèmes Unix. La fonction ` Qt D-Bus ` active automatiquement cette fonctionnalité si une telle version est détectée au moment de la compilation et de l’exécution.

Pour vérifier que votre connexion prend bien en charge le passage de descripteurs de fichiers, vérifiez si la capacité « QDBusConnection::UnixFileDescriptorPassing » est activée à l’aide de QDBusConnection::connectionCapabilities(). Si ce drapeau n’est pas activé, vous ne pourrez pas appeler des méthodes prenant QDBusUnixFileDescriptor en argument, ni même intégrer ce 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 effectuez une communication D-Bus vers une application distante incapable de 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 à la suite d’un appel de méthode, le message sera ignoré sans notification.

Même si cette fonctionnalité n’est pas disponible, `QDBusUnixFileDescriptor` continuera de fonctionner ; il n’est donc pas nécessaire d’intégrer dans le code des vérifications à la compilation concernant la disponibilité de cette fonctionnalité.

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

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

Documentation des fonctions membres

QDBusUnixFileDescriptor::QDBusUnixFileDescriptor()

Crée un objet `QDBusUnixFileDescriptor` sans descripteur de fichier associé. Cela revient à créer l'objet avec un descripteur de fichier non valide (tel que -1).

Voir également fileDescriptor() et isValid().

[explicit] QDBusUnixFileDescriptor::QDBusUnixFileDescriptor(int fileDescriptor)

Crée un objet `QDBusUnixFileDescriptor` en copiant le paramètre ` fileDescriptor `. Le descripteur de fichier d'origine n'est pas modifié et doit être fermé par l'utilisateur.

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

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

Voir également setFileDescriptor() et fileDescriptor().

QDBusUnixFileDescriptor::QDBusUnixFileDescriptor(const QDBusUnixFileDescriptor &other)

Crée un objet `QDBusUnixFileDescriptor` en copiant ` other`.

[noexcept] QDBusUnixFileDescriptor::~QDBusUnixFileDescriptor()

Détruit cet objet ` QDBusUnixFileDescriptor ` et libère le descripteur de fichier Unix qu'il contenait.

int QDBusUnixFileDescriptor::fileDescriptor() const

Renvoie le descripteur de fichier Unix associé à 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 conservé au-delà de la durée de vie de cet objet. Vous pouvez l’utiliser tant que cet objet est valide, mais si vous souhaitez le conserver pour une utilisation à plus long terme, vous devez cloner le descripteur de fichier à 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 plateforme. En d’autres termes, cette fonction renvoie « true » s’il s’agit d’une plateforme Unix.

Notez que QDBusUnixFileDescriptor continue de 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 consommera 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 égal à -1.

Voir également fileDescriptor().

void QDBusUnixFileDescriptor::setFileDescriptor(int fileDescriptor)

Définit le descripteur de fichier détenu par cet objet ` QDBusUnixFileDescriptor ` sur une copie de ` fileDescriptor`. Le descripteur de fichier d'origine n'est pas modifié et doit être fermé par l'utilisateur.

Notez que la valeur renvoyée par ` fileDescriptor()` sera différente du paramètre ` fileDescriptor ` passé en argument.

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

Voir également isValid() et fileDescriptor().

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

Permute cette instance de descripteur de fichier avec other. Cette opération est très rapide et ne rencontre jamais d'échec.

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

La fonction « Move » attribue l'adresse other à celle-ci : QDBusUnixFileDescriptor.

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

Copie le descripteur de fichier Unix à partir de l'objet other QDBusUnixFileDescriptor . Si l'objet actuel contenait un descripteur de fichier, celui-ci sera préalablement libéré de manière appropriée.

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