○共有メモリ

現在の共有メモリの状態はipcsコマンドで表示できる
キーが同じなら違うプロセスでも同一メモリにアクセスできます

■共有メモリを読み書きするサンプル

#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>


main(){
	//適当なファイルをキーにする
	key_t key=ftok("/bin/vi",1);
	//共有メモリを割り付け	
	int shmid=shmget(key,sizeof(int),IPC_CREAT | 0666);
	if(shmid==EOF){
		printf("%s\n","ERR");
		exit(0);
	}
	//共有メモリのアタッチ
	int*head=(int*)shmat(shmid,0,0);
	if(head==(int*)EOF){
		printf("%s\n","ERR");
		exit(0);
	}
	int*p=head;
	
	*p=20;//共有メモリに値を書き込み

	printf("%d\n",*p);//共有メモリから値を読みだし
	
	//共有メモリのデタッチ
	if(shmdt(head)==EOF){
		printf("%d\n","ERR");
		exit(0);
	}
}






▲トップページ > Linux と C