QNativeIpcKey Class
QNativeIpcKey クラスは、QSystemSemaphore およびQSharedMemory で使用されるネイティブキーを保持します。詳細...
| ヘッダー: | #include <QNativeIpcKey> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| 以下のように: | Qt 6.6 |
QNativeIpcKey の比較
| カテゴリ | 比較可能な型 |
|---|---|
| 等価性 | QNativeIpcKey |
パブリック型
| 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 &key, size_t seed = 0) |
| 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 5 アプリケーションである場合)でも、Qt の configure スクリプトに渡されるオプションが同じであれば当てはまります。
Qt以外のプロセスへのキーの伝達
Qt以外のプロセスと通信する場合、アプリケーションは相手プロセスが使用しているキーの型を取得するよう手配する必要があります。これは特に、PosixRealtime とSystemV の両方が一般的であるUnixシステムにおいて重要です。
ネイティブキーの文字列表現
QNativeIpcKey の文字列表現の形式は安定していることを意図しており、したがって、当該キータイプが対象の Qt バージョンでサポートされている限り、後方互換性および前方互換性が保たれます。つまり、古いバージョンの 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 オブジェクトのバックエンド型を表します。キーの型に関する詳細については、「Native IPC Keys」のドキュメントを参照してください。
| 定数 | 値 | 説明 |
|---|---|---|
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 |
メンバ関数のドキュメント
[constexpr noexcept default] QNativeIpcKey::QNativeIpcKey()
DefaultTypeForOs 型の QNativeIpcKey オブジェクトを、キーを空にして作成します。
[explicit constexpr noexcept] QNativeIpcKey::QNativeIpcKey(QNativeIpcKey::Type type)
QNativeIpcKey::QNativeIpcKey(const QString &key, QNativeIpcKey::Type type = DefaultTypeForOs)
型 `type` に対して、ネイティブキー `key ` を保持する `QNativeIpcKey ` オブジェクトを生成します(パラメータを指定しないオーバーロードの場合は空になります)。
[noexcept] QNativeIpcKey::~QNativeIpcKey()
このQNativeIpcKey オブジェクトを破棄します。
[static] QNativeIpcKey QNativeIpcKey::fromString(const QString &text)
text 形式の文字列を解析し、対応するQNativeIpcKey を返します。文字列表現は、このプロセスが作成したキーや、他のプロセスがアタッチすべきキーを他のプロセスに通知するのに役立ちます。
文字列を解析できなかった場合、この関数は `invalid ` オブジェクトを返します。
toString() およびisValid()も参照してください 。
[noexcept] bool QNativeIpcKey::isEmpty() const
nativeKey() が空の場合、true を返します。
nativeKey()も参照してください 。
[noexcept] bool QNativeIpcKey::isValid() const
このオブジェクトに有効なネイティブIPCキー型が含まれている場合、trueを返します。無効な型は、通常、fromString() を使用して文字列表現の解析に失敗した結果生じます。
この関数は、キー文字列が現在のオペレーティングシステムで実際にサポートされているか、または有効であるかについてのチェックは行いません。
type() およびfromString()も参照してください 。
[static noexcept] QNativeIpcKey::Type QNativeIpcKey::legacyDefaultTypeForOs()
Qt 6.6 以前のバージョンで `QSharedMemory ` および `QSystemSemaphore ` が使用していたネイティブ IPC キーに対応する `Type ` を返します。バージョン 6.6 以前の Qt でコンパイルされた、これらのクラスのいずれかを使用するコードとの互換性を維持する必要があるアプリケーションやライブラリは、この関数を使用して、他のアプリケーションがどの IPC タイプを使用しているかを判別できます。
なお、この関数は、Qt が構成時に同一のオプションでビルドされていることを前提としています。
[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 である場合、この関数は空文字列を返します。
fromString()も参照してください 。
[constexpr noexcept] QNativeIpcKey::Type QNativeIpcKey::type() const
このオブジェクトに関連付けられているキーの型を返します。
nativeKey() およびsetType()も参照してください 。
[noexcept] QNativeIpcKey &QNativeIpcKey::operator=(QNativeIpcKey &&other)
QNativeIpcKey &QNativeIpcKey::operator=(const QNativeIpcKey &other)
[noexcept] QNativeIpcKey::QNativeIpcKey(QNativeIpcKey &&other)
QNativeIpcKey::QNativeIpcKey(const QNativeIpcKey &other)
other の内容をコピーまたは移動します。
メンバ変数のドキュメント
const QNativeIpcKey::Type QNativeIpcKey::DefaultTypeForOs
この定数式変数は、現在の OS のデフォルトのネイティブ IPC 型を保持します。Windows システムでは `Type::Windows ` となり、それ以外のシステムでは `Type::PosixRealtime ` となります。なお、この定数は、Qt 6.6 以前のほとんどの Unix システムにおいて `QSharedMemory ` および `QSystemSemaphore ` のデフォルト値とは異なります。詳細については、legacyDefaultTypeForOs() を参照してください。
関連する非メンバー
[noexcept] size_t qHash(const QNativeIpcKey &key, size_t seed = 0)
`key` のハッシュ値を、計算のシードとして `seed ` を使用して返します。
[noexcept] void swap(QNativeIpcKey &value1, QNativeIpcKey &value2)
ネイティブIPCのキーと型「value1 」を「value2 」と入れ替えます。この操作は非常に高速で、失敗することはありません。
[noexcept] bool operator!=(const QNativeIpcKey &lhs, const QNativeIpcKey &rhs)
[noexcept] bool operator==(const QNativeIpcKey &lhs, const QNativeIpcKey &rhs)
lhs オブジェクトとrhs オブジェクトの内容が同じ(または異なる)場合、true を返します。
© 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.