○共有メモリ
現在の共有メモリの状態は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