实际项目共享内存往往不会独立使用,原因是多进程同时使用共享内存会发生竞态,因此往往需要并发控制机制的配合
相关接口函数:
共享内存在所有传递数据的IPC机制中,它的效率是最高的
示例代码:
write.c
#include <stdio.h>
#include <sys/shm.h>
#include <sys/shm.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <string.h>int main(int argc, char *argv[]){key_t key;int id = -1;char *pshm = NULL;key = ftok("./write.c",9); // ftok()id = shmget(key,20,IPC_CREAT | 0666); // shmget()pshm = shmat(id,NULL,SHM_RDONLY); // shmat()printf("share mem = %s\n",pshm);shmdt(pshm); // shmdt()pshm = NULL;return 0;
}
read.c
#include <stdio.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <string.h>int main(int argc, char *argv[]){key_t key;int id = -1;char *pshm = NULL;key = ftok("./write.c",9); // ftok()id = shmget(key,20,IPC_CREAT | 0666); // shmget()pshm = shmat(id,NULL,0); // shmat()strcpy(pshm,"hello");shmdt(pshm); // shmdt()pshm = NULL;return 0;
}