このページでは

QDBusUnixFileDescriptor Class

QDBusUnixFileDescriptor クラスは、1つのUnixファイルディスクリプタを保持します。詳細...

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

パブリック関数

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)

静的パブリックメンバー

bool isSupported()

詳細な説明

QDBusUnixFileDescriptor クラスは、Qt D-Bus モジュールで使用するための 1 つの Unix ファイル記述子を保持するために使用されます。これにより、アプリケーションは D-Bus 接続を介して Unix ファイル記述子を送受信することができ、D-Bus タイプ「h」に自動的にマッピングされます。

QDBusUnixFileDescriptor 型のオブジェクトは、QDBusConnection::registerObject に登録することで D-Bus にエクスポートされるシグナルやスロットのパラメータとしても使用できます。

QDBusUnixFileDescriptor は、ファイル記述子の所有権を取得しません。代わりに、Unix システムコール `dup(2) ` を使用して、ファイル記述子のコピーを作成します。このファイル記述子は QDBusUnixFileDescriptor オブジェクトに属しており、ユーザーが保存したり閉じたりしてはなりません。 必要な場合は、代わりに独自のコピーを作成してください。

利用可能性

Unix ファイルディスクリプタの受け渡しは、すべての D-Bus 接続で利用できるわけではありません。この機能は、Unix システム上の D-Bus ライブラリおよびバスデーモンバージョン 1.4 以降で利用可能です。Qt D-Bus は、コンパイル時および実行時にそのようなバージョンが検出された場合、自動的にこの機能を有効にします。

接続がファイル記述子の受け渡しをサポートしているかどうかを確認するには、QDBusConnection::connectionCapabilities() を使用してQDBusConnection::UnixFileDescriptorPassing 機能の設定状況を確認してください。このフラグが有効になっていない場合、QDBusUnixFileDescriptor を引数とするメソッドへの呼び出しや、バリアントへの当該型の埋め込みは行えません。また、その型を含む呼び出しも受信できません。

また、リモートアプリケーションが Unix ファイル記述子の受け渡しに対応していない場合がある点にも注意してください。そのような型を受け取ることができないリモートアプリケーションに対して D-Bus 呼び出しを行うと、エラー応答が返されます。D-Bus ファイル記述子を含むシグナルを送信しようとしたり、メソッド呼び出しからそれを返そうとしたりしても、そのメッセージは黙って破棄されます。

この機能が利用できない場合でも、QDBusUnixFileDescriptorは正常に動作し続けるため、コード内でこの機能の利用可否をコンパイル時にチェックする必要はありません。

Unix 以外のシステムでは、QDBusUnixFileDescriptor は常に無効な状態を報告し、QDBusUnixFileDescriptor::isSupported() は false を返します。

QDBusConnection::ConnectionCapabilities およびQDBusConnection::connectionCapabilities()も参照してください 。

メンバ関数のドキュメント

QDBusUnixFileDescriptor::QDBusUnixFileDescriptor()

ラップされたファイル記述子を持たない QDBusUnixFileDescriptor を生成します。これは、無効なファイル記述子(-1 など)を使用してオブジェクトを生成することと同じです。

fileDescriptor() およびisValid()も参照してください 。

[explicit] QDBusUnixFileDescriptor::QDBusUnixFileDescriptor(int fileDescriptor)

fileDescriptor パラメータをコピーして、QDBusUnixFileDescriptorオブジェクトを生成します。元のファイルディスクリプタは変更されず、ユーザーが明示的に閉じる必要があります。

なお、fileDescriptor() が返す値は、渡されたfileDescriptor パラメータとは異なる点に注意してください。

fileDescriptor パラメータが無効な場合、isValid()はfalseを返し、fileDescriptor()は-1を返します。

setFileDescriptor() およびfileDescriptor()も参照してください 。

QDBusUnixFileDescriptor::QDBusUnixFileDescriptor(const QDBusUnixFileDescriptor &other)

other をコピーして、QDBusUnixFileDescriptorオブジェクトを生成します。

[noexcept] QDBusUnixFileDescriptor::~QDBusUnixFileDescriptor()

この `QDBusUnixFileDescriptor ` オブジェクトを破棄し、そこに含まれていた Unix ファイルディスクリプタを解放します。

int QDBusUnixFileDescriptor::fileDescriptor() const

このQDBusUnixFileDescriptor オブジェクトに含まれるUnixファイル記述子を返します。無効なファイル記述子の場合は、値-1が返されます。

この関数が返すファイルディスクリプタはQDBusUnixFileDescriptor オブジェクトに属しており、このオブジェクトの存続期間を超えて保存してはならないことに注意してください。このオブジェクトが有効な間は使用しても問題ありませんが、より長期間使用するために保存したい場合は、Unixのdup(2) 、dup2(2) 、またはdup3(2) 関数を使用してファイルディスクリプタを複製する必要があります。

setFileDescriptor() およびisValid()も参照してください 。

[static] bool QDBusUnixFileDescriptor::isSupported()

このプラットフォームでUnixファイルディスクリプタがサポートされている場合、true を返します。つまり、この関数は、Unixプラットフォームである場合にtrue を返します。

なお、この関数がfalse を返した場合でも、QDBusUnixFileDescriptor は引き続き動作します。唯一の違いは、QDBusUnixFileDescriptor オブジェクトが常にisValid() == false の状態になり、fileDescriptor() が常に -1 を返すという点です。このクラスはオペレーティングシステムのリソースを一切消費しません。

bool QDBusUnixFileDescriptor::isValid() const

このUnixファイル記述子が有効な場合、true を返します。有効なUnixファイル記述子は -1 ではありません。

fileDescriptor()も参照してください 。

void QDBusUnixFileDescriptor::setFileDescriptor(int fileDescriptor)

このQDBusUnixFileDescriptor オブジェクトが保持しているファイルディスクリプタを、fileDescriptor のコピーに設定します。元のファイルディスクリプタは変更されず、ユーザー自身が閉じる必要があります。

なお、fileDescriptor() が返す値は、渡されたfileDescriptor パラメータとは異なる点に注意してください。

fileDescriptor パラメータが無効な場合、isValid()はfalseを返し、fileDescriptor()は-1を返します。

isValid() およびfileDescriptor()も参照してください 。

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

このファイル記述子インスタンスをother と入れ替えます。この操作は非常に高速で、失敗することはありません。

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

other をこのQDBusUnixFileDescriptor に移動して割り当てます。

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

other QDBusUnixFileDescriptor オブジェクトから Unix ファイルディスクリプタをコピーします。現在のオブジェクトにファイルディスクリプタが含まれていた場合、その前に適切に破棄されます。

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