QDBusUnixFileDescriptor Class

QDBusUnixFileDescriptor クラスは、1 つの Unix ファイル記述子を保持します。詳細...

Header: #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' にマッピングされます。

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)

Move-assignother をこのQDBusUnixFileDescriptor に割り当てます。

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

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

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。