FTZ Level 10
hintは以下の通りです.
共有メモリとは、複数のプロセスで同時にアクセスできるメモリです.
C言語にはshmgetがこの共有メモリを生成する関数として用いられる.
key tは共有メモリを区別する識別番号なのでshmgetを使用できます.
まず、ipcsコマンドにより、システムが使用する共有メモリセグメントを決定します.
0 x 00001 d 6 aという名前のキーがあり、10進数7530に変換されます.プロンプトで指定されたkey tと同じであるため、アクセスする必要がある共有メモリは0 x 00001 d 6 aである.
共有メモリにアクセスするには、次のソースコードを作成して実行します.
レベル11のパスワードが出てきました.
共有メモリとは、複数のプロセスで同時にアクセスできるメモリです.
C言語にはshmgetがこの共有メモリを生成する関数として用いられる.
key tは共有メモリを区別する識別番号なのでshmgetを使用できます.
まず、ipcsコマンドにより、システムが使用する共有メモリセグメントを決定します.
0 x 00001 d 6 aという名前のキーがあり、10進数7530に変換されます.プロンプトで指定されたkey tと同じであるため、アクセスする必要がある共有メモリは0 x 00001 d 6 aである.
共有メモリにアクセスするには、次のソースコードを作成して実行します.
#include <stdio.h>
#include <stdlib.h>
#include <sys/shm.h>
#include <sys/ipc.h>
#include <sys/types.h>
int main() {
int shmid; // 공유 메모리의 id를 저장할 변수 선언
char* shmdata; // char형 포인터 선언
shmid = shmget(7530, 1028, 0666); // key가 7530, 용량이 1028바이트, 권한이 0666인 공유 메모리를 생성
shmdata = shmat(shmid, NULL, 0); // 공유 메모리 세그먼트에 액세스
printf("%s\n", shmdata); // 내용 출력
shmdt(shmdata); // 공유 메모리 분리
return 0;
}
ちなみに、このソースでchar型ポインタを宣言する理由は、shmat関数がshmidのアドレスを返し、ポインタにアドレスを格納しprintf関数で%sを使用してアドレスの文字列を出力するためである.レベル11のパスワードが出てきました.
Reference
この問題について(FTZ Level 10), 我々は、より多くの情報をここで見つけました https://velog.io/@bin3635/FTZ-Level-10テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol