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() | |
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 モジュールで使用する Unix ファイル記述子を 1 つ保持するために使用されます。これにより、アプリケーションは D-Bus 接続を介して Unix ファイル記述子を送受信できるようになり、D-Bus のタイプ 'h' に自動的にマッピングされます。
QDBusUnixFileDescriptors型のオブジェクトは、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)
QDBusUnixFileDescriptorMove-assignother 。
QDBusUnixFileDescriptor &QDBusUnixFileDescriptor::operator=(const QDBusUnixFileDescriptor &other)
other QDBusUnixFileDescriptor オブジェクトから Unix ファイル記述子をコピーする。現在のオブジェクトにファイル記述子が含まれていた場合、その前に適切に処分されます。
© 2025 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.