QDBusUnixFileDescriptor Class
La clase QDBusUnixFileDescriptor contiene un descriptor de fichero Unix. Más...
| Cabecera: | #include <QDBusUnixFileDescriptor> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS DBus)target_link_libraries(mytarget PRIVATE Qt6::DBus) |
| qmake: | QT += dbus |
- Lista de todos los miembros, incluyendo los heredados
- QDBusUnixFileDescriptor es parte de Clases Implícitamente Compartidas.
Funciones Públicas
| 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) |
Miembros Públicos Estáticos
| bool | isSupported() |
Descripción Detallada
La clase QDBusUnixFileDescriptor se utiliza para mantener un descriptor de archivo Unix para su uso con el módulo Qt D-Bus. Esto permite a las aplicaciones enviar y recibir descriptores de archivo Unix a través de la conexión D-Bus, mapeando automáticamente al tipo D-Bus 'h'.
Los objetos de tipo QDBusUnixFileDescriptors pueden utilizarse también como parámetros en señales y ranuras que se exportan a D-Bus registrándose con QDBusConnection::registerObject.
QDBusUnixFileDescriptor no se apropia del descriptor de archivo. En su lugar, utilizará la llamada al sistema Unix dup(2) para hacer una copia del descriptor de archivo. Este descriptor de archivo pertenece al objeto QDBusUnixFileDescriptor y no debe ser almacenado o cerrado por el usuario. En su lugar, debe hacer su propia copia si lo necesita.
Disponibilidad
El paso de descriptores de archivo Unix no está disponible en todas las conexiones D-Bus. Esta característica está presente con la librería D-Bus y el demonio de bus versión 1.4 en adelante en sistemas Unix. Qt D-Bus habilita automáticamente la característica si tal versión fue encontrada en tiempo de compilación y tiempo de ejecución.
Para verificar que su conexión soporta el paso de descriptores de fichero, compruebe si la capacidad QDBusConnection::UnixFileDescriptorPassing está activada con QDBusConnection::connectionCapabilities(). Si la bandera no está activa, entonces no podrás hacer llamadas a métodos que tengan QDBusUnixFileDescriptor como argumentos o incluso incrustar tal tipo en una variante. Tampoco recibirá llamadas que contengan ese tipo.
Ten en cuenta también que las aplicaciones remotas pueden no tener soporte para el paso de descriptores de archivo Unix. Si haces un D-Bus a una aplicación remota que no puede recibir tal tipo, recibirás una respuesta de error. Si intentas enviar una señal que contenga un descriptor de fichero D-Bus o devolver uno desde una llamada a un método, el mensaje será descartado silenciosamente.
Incluso si la función no está disponible, QDBusUnixFileDescriptor continuará funcionando, por lo que el código no necesita tener comprobaciones en tiempo de compilación para la disponibilidad de esta función.
En sistemas no-Unix, QDBusUnixFileDescriptor siempre reportará un estado inválido y QDBusUnixFileDescriptor::isSupported() devolverá false.
Véase también QDBusConnection::ConnectionCapabilities y QDBusConnection::connectionCapabilities().
Documentación de las funciones miembro
QDBusUnixFileDescriptor::QDBusUnixFileDescriptor()
Construye un QDBusUnixFileDescriptor sin un descriptor de fichero envuelto. Esto es equivalente a construir el objeto con un descriptor de fichero inválido (como -1).
Véase también fileDescriptor() y isValid().
[explicit] QDBusUnixFileDescriptor::QDBusUnixFileDescriptor(int fileDescriptor)
Construye un objeto QDBusUnixFileDescriptor copiando el parámetro fileDescriptor. El descriptor de fichero original no se toca y debe ser cerrado por el usuario.
Tenga en cuenta que el valor devuelto por fileDescriptor() será diferente del parámetro fileDescriptor pasado.
Si el parámetro fileDescriptor no es válido, isValid() devolverá false y fileDescriptor() devolverá -1.
Véase también setFileDescriptor() y fileDescriptor().
QDBusUnixFileDescriptor::QDBusUnixFileDescriptor(const QDBusUnixFileDescriptor &other)
Construye un objeto QDBusUnixFileDescriptor copiando other.
[noexcept] QDBusUnixFileDescriptor::~QDBusUnixFileDescriptor()
Destruye este objeto QDBusUnixFileDescriptor y se deshace del descriptor de archivo Unix que contenía.
int QDBusUnixFileDescriptor::fileDescriptor() const
Devuelve el descriptor de archivo Unix contenido por este objeto QDBusUnixFileDescriptor. Un descriptor de fichero inválido se representa con el valor -1.
Tenga en cuenta que el descriptor de archivo devuelto por esta función es propiedad del objeto QDBusUnixFileDescriptor y no debe almacenarse más allá del tiempo de vida de este objeto. Está bien utilizarlo mientras este objeto sea válido, pero si se desea almacenarlo para un uso más prolongado, el descriptor de fichero debe clonarse utilizando las funciones Unix dup(2), dup2(2) o dup3(2).
Véase también setFileDescriptor() y isValid().
[static] bool QDBusUnixFileDescriptor::isSupported()
Devuelve true si los descriptores de archivo Unix están soportados en esta plataforma. En otras palabras, esta función devuelve true si se trata de una plataforma Unix.
Observe que QDBusUnixFileDescriptor continúa operando incluso si esta función devuelve false. La única diferencia es que los objetos QDBusUnixFileDescriptor siempre estarán en el estado isValid() == false y fileDescriptor() siempre devolverá -1. La clase no consumirá ningún recurso del sistema operativo.
bool QDBusUnixFileDescriptor::isValid() const
Devuelve true si este descriptor de archivo Unix es válido. Un descriptor de fichero Unix válido no es -1.
Véase también fileDescriptor().
void QDBusUnixFileDescriptor::setFileDescriptor(int fileDescriptor)
Establece el descriptor de fichero que contiene este objeto QDBusUnixFileDescriptor a una copia de fileDescriptor. El descriptor de fichero original no se toca y debe ser cerrado por el usuario.
Tenga en cuenta que el valor devuelto por fileDescriptor() será diferente del parámetro fileDescriptor pasado.
Si el parámetro fileDescriptor no es válido, isValid() devolverá false y fileDescriptor() devolverá -1.
Véase también isValid() y fileDescriptor().
[noexcept] void QDBusUnixFileDescriptor::swap(QDBusUnixFileDescriptor &other)
Intercambia esta instancia de descriptor de archivo con other. Esta operación es muy rápida y nunca falla.
[noexcept] QDBusUnixFileDescriptor &QDBusUnixFileDescriptor::operator=(QDBusUnixFileDescriptor &&other)
Mover-asigna other a este QDBusUnixFileDescriptor.
QDBusUnixFileDescriptor &QDBusUnixFileDescriptor::operator=(const QDBusUnixFileDescriptor &other)
Copia el descriptor de fichero Unix del objeto other QDBusUnixFileDescriptor . Si el objeto actual contenía un descriptor de archivo, se eliminará correctamente antes.
© 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.