文字列の配列を保持するために共有メモリのセグメントをセットアップしようとしています。例として、この配列
string example[] = {"これは", "例 ", "文字列"};
次に、shmget を呼び出して、適切な量の OS 共有メモリを予約できるようにします。
shmget(IPC_PRIVATE, sizeOf(example), IPC_CREAT);//これで共有メモリ セグメントが作成されることを願っています
「キー引数は、セマフォ ID に関連付けられたアクセス値です」と書かれているこのサイトを見つけました。セマフォ ID とは何ですか。
これは g++ -Wall を使用してコンパイルされますが、チェックしているかどうかを確認する方法がわかりません。Linux の shm マニュアルによると、IPC_PRIVATE は「key_t」タイプのものを指定する必要があります。私の考えは、共有メモリを識別する方法、つまり共有メモリ名またはID番号として文字列を指定する方法が鍵になるということです。
マニュアルをよく読むと、shmget() が「shmid」を返すことがわかります。繰り返しになりますが、shmidとはint、string、pointerですか、それとも特別なタイプですか?これが共有メモリセグメントを識別する方法ですか? また、shmget() が何かを返す場合、それを何かに割り当てる必要はありませんか?
チュートリアルや概要をお勧めできれば、本当に感謝しています。上記の特定の質問に加えて、fork() コマンドから作成されるスレッドから共有メモリにアクセスする例を教えてください。
私の最終的な目標は、配列内の文字列ごとに一種の反転を実行するスレッドを生成することです。作業するチュートリアルが見つからないため、これは共有メモリと pthreads の作業を開始するためのほんの小さなタスクです。