IPC 简单的读写通信实例 linux环境高级编程
2012-09-18 14:43
597 查看
先在当前目录即编译目录下 是有touch建立 myshm文件
然后依次编译以下两个文件
shm_write
shm_read
然后先执行./shm_write
再执行 ./shm_read
就可以看到读到的数据了
然后依次编译以下两个文件
shm_write
#include <fcntl.h> #include <stdio.h> #include "apue.h" #include <errno.h> #include <sys/wait.h> #include "sys/types.h" #include <unistd.h> #include <stropts.h> #include <sys/mman.h> #include <sys/shm.h> #include <sys/ipc.h> #include <string.h> typedef struct { char name[4]; int age; }people; int main(int argc,char *argv[]) { int i,shmid; key_t key; char temp; people *p_map; char *name="./myshm"; //创建一个键值 key=ftok(name,1); perror("ftok"); //获取共享内存id,也即创建ipc shmid=shmget(key,4096,IPC_CREAT|00666); perror("shmget"); //返回共享内存的地址 p_map=(people *)shmat(shmid,NULL,0); temp='a'; for(i=0;i<10;i++) { memcpy((*(p_map+i)).name,&temp,1); (*(p_map+i)).age=20+i; } }
shm_read
#include <fcntl.h> #include <stdio.h> #include "apue.h" #include <errno.h> #include <sys/wait.h> #include "sys/types.h" #include <unistd.h> #include <stropts.h> #include <sys/mman.h> #include <sys/shm.h> #include <sys/ipc.h> #include <string.h> //读端程序 typedef struct { char name[4]; int age; }people; int main(int argc,char *argv[]) { int i,shmid; key_t key; char temp; people *p_map; char *name="./myshm"; //创建一个键值 key=ftok(name,1); perror("ftok"); //获取共享内存id,也即创建ipc shmid=shmget(key,4096,IPC_CREAT|00666); perror("shmget"); //返回共享内存的地址 p_map=(people *)shmat(shmid,NULL,0); temp='a'; for(i=0;i<10;i++) { printf("name %s\n",(*(p_map+i)).name); printf("age %d\n",(*(p_map+i)).age); } //unlink shmdt(p_map); perror("shmdt"); }
然后先执行./shm_write
再执行 ./shm_read
就可以看到读到的数据了
相关文章推荐
- UNIX环境高级编程学习之第十六章网络IPC:套接字 - 简单UDP Socket 通信
- UNIX环境高级编程学习之第十六章网络IPC:套接字 - 简单TCP Socket 通信
- 【linux高级环境编程学习笔记四】消息队列进程通信
- unix环境高级编程 APUE.H最简单编译方法(第二版) Linux和Ubuntu
- UNIX环境高级编程学习之第十六章网络IPC:套接字 - 非阻塞的Socket通信Poll模型(多路复用), 实用Socket通信模板
- unix环境IPC编程套接字(一,TCP通信实例
- 多线程 读写锁 实例--同步操作双向链表(unix环境高级编程)
- UNIX环境高级编程学习之第十六章网络IPC:套接字 - 非阻塞的Socket通信Select模型(多路复用), 实用Socket通信模板。
- 【linux高级环境编程学习笔记二】信号通信
- 【linux高级环境编程学习笔记三】共享内存通信
- unix环境IPC通信之socket(三),tcp采用并发服务器编程实例,多进程方式 4000
- UNIX环境高级编程学习之第十六章网络IPC:套接字 - 非阻塞的Socket通信EPoll模型(多路复用), 实用Socket通信模板
- Unix环境高级编程第三版中实例代码如何在自己的linux上运行的问题
- ios socket编程的客户端和服务器端通信简单实例
- (Linux高级编程)读写文件
- unix环境高级编程编译方法 -apue最简单编译方法(第二版)
- APUE(unix环境高级编程)第三版---first day---部署书中实例的运行环境(apue.h)
- linux高级编程基础系列:线程间通信
- LINUX 简单的串口读写实例
- UNIX环境高级编程——Linux进程地址空间和虚拟内存