QNativeIpcKey Class

QNativeIpcKey クラスは、QSystemSemaphore およびQSharedMemory で使用されるネイティブ・キーを保持します。詳細...

Header: #include <QNativeIpcKey>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Since: Qt 6.6

このクラスは等価比較可能です。

パブリック型

enum class Type { SystemV, PosixRealtime, Windows }

パブリック関数

QNativeIpcKey()
QNativeIpcKey(QNativeIpcKey::Type type)
QNativeIpcKey(const QString &key, QNativeIpcKey::Type type = DefaultTypeForOs)
QNativeIpcKey(const QNativeIpcKey &other)
QNativeIpcKey(QNativeIpcKey &&other)
~QNativeIpcKey()
bool isEmpty() const
bool isValid() const
QString nativeKey() const
void setNativeKey(const QString &newKey)
void setType(QNativeIpcKey::Type type)
void swap(QNativeIpcKey &other)
QString toString() const
QNativeIpcKey::Type type() const
QNativeIpcKey &operator=(QNativeIpcKey &&other)
QNativeIpcKey &operator=(const QNativeIpcKey &other)

静的パブリックメンバ

const QNativeIpcKey::Type DefaultTypeForOs
QNativeIpcKey fromString(const QString &text)
QNativeIpcKey::Type legacyDefaultTypeForOs()
size_t qHash(const QNativeIpcKey &ipcKey)
size_t qHash(const QNativeIpcKey &ipcKey, size_t seed)
void swap(QNativeIpcKey &value1, QNativeIpcKey &value2)
bool operator!=(const QNativeIpcKey &lhs, const QNativeIpcKey &rhs)
bool operator==(const QNativeIpcKey &lhs, const QNativeIpcKey &rhs)

詳細な説明

QSharedMemoryQSystemSemaphore クラスは、「キー」として知られるシステム全体の識別子を使用してリソースを識別します。低レベルのキー値とキータイプは、QNativeIpcKey クラスを使用して Qt にカプセル化されます。

これらの2つのクラスは、QSharedMemory::platformSafeKey()とQSystemSemaphore::platformSafeKey()を使用して、クロスプラットフォーム識別子からネイティブ・キーを作成する手段も提供します。Qt のバージョンが異なると異なる変換が行われ、異なるネイティブ・キーが生成される可能性があるためです。代わりに、IPCオブジェクトを作成したアプリケーションは、以下に説明するメソッドを使用して、結果のネイティブ・キーを通信する必要があります。

キーの種類、プラットフォーム固有の制限、古いアプリケーションやQt以外のアプリケーションとの相互運用性の詳細については、ネイティブIPCキーのドキュメントを参照してください。これには、Apple App Store経由で入手したすべてのアプリを含む、Appleプラットフォーム上のサンドボックス・アプリケーションに関する重要な情報も含まれています。

他のプロセスとのキーの通信

他の Qt プロセスとキーを通信する

他のプロセスが QNativeIpcKey をサポートしている場合、toString() から文字列表現を取得し、fromString() を使用してパースするのが最適な通信方法です。この表現は、名前がよく知られているファイルに保存するか、QProcess::setArguments() を使用して子プロセスにコマンドラインで渡すことができます。

他のプロセスが QNativeIpcKey をサポートしていない場合、2 つのプロセスはnativeKey() を交換できますが、古いコードではキー・タイプを調整できない可能性があります。legacyDefaultTypeForOs() 関数は、レガシー・コードが使用していた型を返しますが、これはDefaultTypeForOs 定数と一致しない場合があります。これは、Qt configureスクリプトに渡されるオプションが同じであれば、古いアプリケーションが新しいアプリケーションと同じビルドを使用していなくても当てはまります(例えば、Qt 5アプリケーション)。

Qt 以外のプロセスとのキーの通信

Qt 以外のプロセスと通信を行う場合、アプリケーションは相手のプロセスが使用しているキーの種類を取得する必要があります。これは特に、PosixRealtimeSystemV の両方が一般的な Unix システムでは重要です。

ネイティブ・キーの文字列表現

QNativeIpcKeyの文字列表現のフォーマットは安定しているため、キータイプがQtのバージョンでサポートされている限り、前後で互換性があります。つまり、古いQtでは、リリース後に導入されたキータイプの文字列表現のパースに失敗します。アプリケーションは、QSharedMemory::isKeyTypeSupported() や QSystemSemaphore::isKeyTypeSupported() を使用してサポートを確認する必要があります。

文字列表現の形式は、コロン (':') で区切られた 2 つの要素で形成されます。最初の要素はキー・タイプで、以下の表で説明します。2つ目の要素は型固有のペイロードで、percent-encoding を使用する。現在サポートされているすべての鍵タイプについて、デコードされた形はnativeKey()フィールドの内容と同じである。

キー・タイプ文字列表現
PosixRealtime"posix"
SystemV"systemv"
Windows"windows"
非標準SystemV"systemv-" に続く10進数

このフォーマットはURIに似ており、QUrl のようなURI/URL解析関数を使った解析が可能である。このようなAPIでパースされる場合、キータイプはscheme のように表示され、ペイロードはpath のようになる。 クエリーやフラグメントの使用は予約されている。

QSharedMemory およびQSystemSemaphoreも参照のこと

メンバ型のドキュメント

enum class QNativeIpcKey::Type

この列挙型は、IPC オブジェクトのバックエンド型を記述する。キー・タイプの詳細については、ネイティブ IPC キーのドキュメントを参照してください。

定数説明
QNativeIpcKey::Type::SystemV0x51X/Open System Initiative (XSI) または System V (SVr4) API
QNativeIpcKey::Type::PosixRealtime0x100IEEE 1003.1b (POSIX.1b) API
QNativeIpcKey::Type::Windows0x101Win32 API

setType() およびtype()も参照

メンバ関数 ドキュメント

[explicit constexpr noexcept] QNativeIpcKey::QNativeIpcKey(QNativeIpcKey::Type type)

QNativeIpcKey::QNativeIpcKey(const QString &key, QNativeIpcKey::Type type = DefaultTypeForOs)

type 型のネイティブキーkey (パラメータなしのオーバーロードでは空)を保持するQNativeIpcKey オブジェクトを構築する。

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

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

[noexcept] QNativeIpcKey::QNativeIpcKey(QNativeIpcKey &&other)

QNativeIpcKey::QNativeIpcKey(const QNativeIpcKey &other)

other の内容をコピーまたは移動します。

[constexpr noexcept] QNativeIpcKey::QNativeIpcKey()

空のキーを持つDefaultTypeForOs 型の QNativeIpcKey オブジェクトを構築します。

[noexcept] QNativeIpcKey::~QNativeIpcKey()

このQNativeIpcKey オブジェクトを破棄します。

[static] QNativeIpcKey QNativeIpcKey::fromString(const QString &text)

文字列形式text を解析し、対応するQNativeIpcKey を返します。文字列表現は、このプロセスが作成し、他のプロセスにアタッチすべきキーを通知するのに便利です。

文字列を解析できなかった場合、この関数はinvalid オブジェクトを返す。

toString() およびisValid()も参照

[noexcept] bool QNativeIpcKey::isEmpty() const

nativeKey() が空の場合は真を返す。

nativeKey()も参照

[noexcept] bool QNativeIpcKey::isValid() const

このオブジェクトに有効なネイティブ IPC キー・タイプが含まれている場合は真を返します。無効な型は通常、fromString() を使用した文字列表現のパースに失敗した結果です。

この関数は、キー文字列が現在のオペレーティング・システムで実際にサポートされているか、有効かどうかのチェックを行いません。

type() およびfromString()も参照のこと

[static noexcept] QNativeIpcKey::Type QNativeIpcKey::legacyDefaultTypeForOs()

QSharedMemoryQSystemSemaphore が Qt 6.6 より前に使用していたネイティブ IPC キーに対応するType を返します。バージョン6.6より前のQtでコンパイルされたいずれかのクラスを使用するコードとの互換性を保持する必要があるアプリケーションやライブラリは、この関数を使用して、他のアプリケーションが使用している可能性のあるIPCタイプを判別することができます。

この関数は、Qtが同一のconfigure-timeオプションでビルドされている必要があることに注意してください。

[noexcept] QString QNativeIpcKey::nativeKey() const

このオブジェクトに関連付けられたネイティブ・キー文字列を返します。

setNativeKey() およびtype()も参照してください

void QNativeIpcKey::setNativeKey(const QString &newKey)

このオブジェクトのネイティブ・キーをnewKey に設定します。

nativeKey() およびsetType() も参照

[constexpr] void QNativeIpcKey::setType(QNativeIpcKey::Type type)

このオブジェクトの IPC タイプをtype に設定します。

type() およびsetNativeKey() も参照して ください。

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

ネイティブ IPC キーと型other をこのオブジェクトと交換します。この操作は非常に高速で、失敗することはありません。

QString QNativeIpcKey::toString() const

このオブジェクトの文字列表現を返します。文字列表現は、このプロセスが作成した、アタッチすべきキーを他のプロセスに通知するのに便利です。

現在のオブジェクトがinvalid である場合、この関数はNULL文字列を返す。

fromString()も参照

[constexpr noexcept] QNativeIpcKey::Type QNativeIpcKey::type() const

このオブジェクトに関連付けられたキー・タイプを返します。

nativeKey() およびsetType()も参照

メンバ変数ドキュメント

const QNativeIpcKey::Type QNativeIpcKey::DefaultTypeForOs

この定数式変数は、現在の OS のデフォルトのネイティブ IPC 型を保持する。WindowsシステムではType::Windows 、それ以外ではType::PosixRealtime 。この定数は、QSharedMemoryQSystemSemaphore が Qt 6.6 以前の大半の Unix システムでデフォルトになっているものとは異なることに注意してください。詳細はlegacyDefaultTypeForOs() を参照してください。

関連する非メンバー

[noexcept] bool operator!=(const QNativeIpcKey &lhs, const QNativeIpcKey &rhs)

[noexcept] bool operator==(const QNativeIpcKey &lhs, const QNativeIpcKey &rhs)

lhsrhs オブジェクトが同じ(または異なる)内容を保持している場合に真を返します。

[noexcept] size_t qHash(const QNativeIpcKey &ipcKey)

0 のデフォルトシードを使用して、ipcKey のハッシュ値を返します。

[noexcept] size_t qHash(const QNativeIpcKey &ipcKey, size_t seed)

seed を計算のシードに使用して、ipcKey のハッシュ値を返します。

[noexcept] void swap(QNativeIpcKey &value1, QNativeIpcKey &value2)

ネイティブIPCのキーと型value1value2 と入れ替えます。この操作は非常に高速で、失敗することはありません。

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