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) |
詳細な説明
QSharedMemory とQSystemSemaphore クラスは、「キー」として知られるシステム全体の識別子を使用してリソースを識別します。低レベルのキー値とキータイプは、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 以外のプロセスと通信を行う場合、アプリケーションは相手のプロセスが使用しているキーの種類を取得する必要があります。これは特に、PosixRealtime とSystemV の両方が一般的な 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::SystemV | 0x51 | X/Open System Initiative (XSI) または System V (SVr4) API |
QNativeIpcKey::Type::PosixRealtime | 0x100 | IEEE 1003.1b (POSIX.1b) API |
QNativeIpcKey::Type::Windows | 0x101 | Win32 API |
メンバ関数 ドキュメント
[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 オブジェクトを返す。
[noexcept]
bool QNativeIpcKey::isEmpty() const
nativeKey() が空の場合は真を返す。
nativeKey()も参照 。
[noexcept]
bool QNativeIpcKey::isValid() const
このオブジェクトに有効なネイティブ IPC キー・タイプが含まれている場合は真を返します。無効な型は通常、fromString() を使用した文字列表現のパースに失敗した結果です。
この関数は、キー文字列が現在のオペレーティング・システムで実際にサポートされているか、有効かどうかのチェックを行いません。
type() およびfromString()も参照のこと 。
[static noexcept]
QNativeIpcKey::Type QNativeIpcKey::legacyDefaultTypeForOs()
QSharedMemory とQSystemSemaphore が 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
このオブジェクトに関連付けられたキー・タイプを返します。
メンバ変数ドキュメント
const QNativeIpcKey::Type QNativeIpcKey::DefaultTypeForOs
この定数式変数は、現在の OS のデフォルトのネイティブ IPC 型を保持する。WindowsシステムではType::Windows 、それ以外ではType::PosixRealtime 。この定数は、QSharedMemory やQSystemSemaphore が Qt 6.6 以前の大半の Unix システムでデフォルトになっているものとは異なることに注意してください。詳細はlegacyDefaultTypeForOs() を参照してください。
関連する非メンバー
[noexcept]
bool operator!=(const QNativeIpcKey &lhs, const QNativeIpcKey &rhs)
[noexcept]
bool operator==(const QNativeIpcKey &lhs, const QNativeIpcKey &rhs)
lhs とrhs オブジェクトが同じ(または異なる)内容を保持している場合に真を返します。
[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のキーと型value1 をvalue2 と入れ替えます。この操作は非常に高速で、失敗することはありません。
本書に含まれる文書の著作権は、各所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。