进程间通信之共享内存
来源:互联网 发布:python课程 编辑:程序博客网 时间:2024/05/18 02:16
#include<iostream>#include<stdio.h>#include<unistd.h>#include<sys/wait.h>#include<sys/shm.h>#include<stdlib.h>using namespace std;int main(int argc,char *argv[]){ if(argc!=2) {printf("请输入参数\n");exit(-1);} int n=atoi(argv[1]),shmid; if(n<0) {printf("请输入正数\n");exit(-1);} printf("%d\n",n); int *p=new int[n]; shmid=shmget((key_t)1234,100000,0666 | IPC_CREAT); if(shmid<0) {printf("共享内存失败\n");exit(-1);} pid_t pid=fork(); if(pid<0) {printf("进程创建失败");exit(-1);} else if(pid==0) { p=(int *)shmat(shmid,NULL,0); if(p==(void *) -1) {printf("子进程连接共享内存失败\n");exit(-1);} p[0]=0;p[1]=1; for(int x=2;x<n;x++) p[x]=p[x-1]+p[x-2]; if(shmdt(p)<0) printf("子进程删除共享内存失败\n"); printf("子进程执行完毕\n"); exit(0); } else { p=(int *)shmat(shmid,NULL,0); if(p==(void *) -1) {printf("父进程连接共享内存失败\n");exit(-1);} wait(NULL); printf("执行成功,输出子进程结果:\n"); for(int x=0;x<n;x++) printf("%d ",p[x]); if(shmdt(p)<0) printf("父进程删除共享内存失败\n"); printf("\n"); }}
阅读全文
0 0
- linux进程间通信之共享内存
- 进程间通信之共享内存篇
- linux进程间通信之共享内存
- 进程间通信之共享内存
- 进程间通信之共享内存
- 进程间通信之共享内存
- 进程间通信之共享内存篇
- 进程间通信之共享内存
- Linux进程间通信之共享内存
- Linux进程间通信之共享内存
- 进程间通信之共享内存
- Windows进程间通信之共享内存
- 进程间通信之共享内存
- 进程间通信之共享内存
- QT 进程间通信 之 共享内存
- 进程间通信IPC之--共享内存
- 进程间通信之共享内存
- linux进程间通信之共享内存
- 一位过来ACMer的心得
- TabLayout在activity中
- 2017国庆 雅礼集训 题解合集
- 【LR】1界面
- Qt学习: QTimerEvent定时器事件的处理程序代码示例
- 进程间通信之共享内存
- 链队列--简单操作
- 面试题整理
- mysql与oracle分页查询
- mysql Model
- Tablayout的frament方法
- Android 悬浮编辑框
- Dijkstra 单源最短路
- 烟台大学官网静态图