进程通信--内存共享聊天

xx.c

```c
#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <stdlib.h>
#include <sys/shm.h>
#include <unistd.h>
#include <sys/sem.h>
int main()
{
key_t key = ftok("pause.c",5);
if(key<0){
perror("ftok error");
exit(-1);
}
////创建内存
printf("key : %#x\n",key);
int shmid = shmget(key,200,IPC_CREAT|0666);
if(shmid<0){
perror("shmget error");
exit(-1);
}
printf("shmid:%d\n",shmid);
//内存映射
void *addr = shmat(shmid,NULL,0);
char *p = (char *)addr;
printf("%s\n",p);
}
```

xx_s.c

```c
#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <stdlib.h>
#include <sys/shm.h>
#include <sys/sem.h>
int main()
{
key_t key = ftok("pause.c",5);
if(key<0){
perror("ftok error");
exit(-1);
}
////创建内存
printf("key : %#x\n",key);
int shmid = shmget(key,200,IPC_CREAT|0666);
if(shmid<0){
perror("shmget error");
exit(-1);
}
printf("shmid:%d\n",shmid);
//内存映射
void *addr = shmat(shmid,NULL,0);
char *p = (char *)addr;
scanf("%s",p);
}
```
## 只能单面 一个写 一个读,只能执行一次

 

posted @ 2022-05-14 19:02  孤走  阅读(21)  评论(0编辑  收藏  举报