linux_c语言实现父子进程共享内存
来源:互联网 发布:网络黑白电子版网盘 编辑:程序博客网 时间:2024/05/17 02:06
具体代码实现部分:
#include<stdio.h>#include<sys/shm.h>#include<sys/ipc.h>#include<sys/types.h>extern int etext,edata,end;int main(int argc,char *argv[ ]){int shmid;int proj_id;key_t key;int shm_size;char *shm_addr,*addr;pid_t pid;if(argc!=3){printf("usage:%s shared_memory_size info\n",argv[0]);return 1;}shm_size=atoi(argv[1]);proj_id=2;key=ftok("./",proj_id);if(key==-1){perror("cannot generate the ipc key");return 1;}shmid=shmget(key,shm_size,IPC_CREAT | 0660);if(shmid==-1){perror("cannot create a shared memory segment ");return 1;}addr=(char*)shmat(shmid,NULL,0);shm_addr=addr;if(shm_addr==(char*)(-1)){perror("cannot attach the shared memory to process");return 1;}printf("\n");printf("==========address information==========\n");printf("etext address:%x\n",&etext);printf("edata address:%x\n",&edata);printf("end address :%x\n",&end);printf("shared memory segment address:%x\n",shm_addr);printf("=======================================\n");strcpy(shm_addr,argv[2]);printf("the input string is:%s\n",argv[2]);printf("before fork,int shared memory segment the string is:%s\n",shm_addr);pid=fork();if(pid==-1){perror("cannot creat new process");return 1;}else if(pid==0){printf("in child process,the string is:%s\n",shm_addr);printf("modify the content in shared memory\n");*shm_addr +=1;_exit(0);}else{wait(NULL);printf("after fork,int shared memory segment the string is: %s\n",shm_addr);if(shmdt(shm_addr)==-1){perror("cannot release the memory");return 1;}if(shmctl(shmid,IPC_RMID,NULL)==-1){perror("cannot delete existing shared memory segment");return 1;}}return 0; }
然后就是编译运行了:
#gcc -o share_memory share_memory.c
#./share_memory 1024 message_to_shared_memory
阅读全文
0 0
- linux_c语言实现父子进程共享内存
- 共享内存实现父子进程间通讯
- LINUX_C编程实战-《进程间的通信》-共享内存
- 父子进程间的共享内存通信
- linux多线程【8】mmap实现父子进程的共享内存通信,用信号量同步
- linux_c开发(5-4)进程间通讯_共享内存通讯
- fork父子进程共享
- fork()----父子进程共享
- 父子进程共享内存通信的三种方法
- 简单的,父子进程间的共享内存通信
- 利用共享存储实现父子进程间的通信
- 父子进程数据共享问题
- 父子进程数据共享问题
- 父子进程共享的资源
- 父子进程间文件共享
- C语言无名管道实现父子进程间通信
- 进程通信----共享内存以及mmap函数实现共享内存
- 父子进程通信的两种方式--消息队列和共享内存
- 简单日历Demo
- Android 反编译神器jadx的使用
- 接口
- NodeJS微信支付
- Dubbo架构设计详解
- linux_c语言实现父子进程共享内存
- 计算两个时间戳之间相差的时间
- 提问的智慧
- aidl的简单快速入门
- PYTHON 与 小说
- setTimeout在浏览器兼容问题
- VPS、独立服务器、云服务器有哪些优势?有什么区别?
- 点击uiautomatorviewer.bat获取screenshot报错的解决方法
- Git免密码提交