System V 中内存共享的简单实例
来源:互联网 发布:淘宝直通车如何操作 编辑:程序博客网 时间:2024/06/05 19:58
//read.cpp#include <sys/shm.h>#include <unistd.h>#include <iostream>#define PATH "/tmp/unixdomain"using namespace std;struct share_mem {int rw_flag;char data[20];};int main(int argc, const char* argv[]) {key_t k = ftok(PATH, 1);if(-1 == k) {std::cout << "create key fail" << std::endl;exit(-1);}std::cout << "key : " << k << std::endl;int shm_id = shmget(k, sizeof(share_mem), IPC_CREAT|0640);if(-1 == shm_id) {std::cout << "create shm fail" << std::endl;exit(-1);}std::cout << "create shm success" << std::endl;share_mem* pBuf = (share_mem*)shmat(shm_id, NULL, 0);if(-1 == (int)pBuf) {std::cout << "map shm fail" << std::endl;exit(-1);}std::cout << "map shm success" << std::endl;pBuf->rw_flag = 0;while(1) {if(1 == pBuf->rw_flag)break;elsesleep(1);}std::cout << "read:" << pBuf->data << std::endl;if(-1 == shmdt(pBuf)) {std::cout << "delete shm fail" << std::endl;exit(-1);}std::cout << "delete shm success" << std::endl;shmctl(shm_id, IPC_RMID, NULL);return 0;}
//write.cpp#include <sys/shm.h>#include <unistd.h>#include <iostream>#define PATH "/tmp/unixdomain"using namespace std;struct share_mem {int rw_flag;char data[20];};int main(int argc, const char* argv[]) {key_t k = ftok(PATH, 1);if(-1 == k) {std::cout << "create key fail" << std::endl;exit(-1);}std::cout << "key : " << k << std::endl;int shm_id = 0;while(1) {shm_id = shmget(k, sizeof(share_mem), 0640);if(-1 == shm_id) sleep(1);elsebreak; }std::cout << "get shm success" << std::endl;share_mem* pBuf = (share_mem*)shmat(shm_id, NULL, 0);if(-1 == (int)pBuf) {std::cout << "map shm fail" << std::endl;exit(-1);}std::cout << "map shm success" << std::endl;strcpy(pBuf->data, "this is shm test");std::cout << "write:" << pBuf->data << std::endl;pBuf->rw_flag = 1;if(-1 == shmdt(pBuf)) {std::cout << "delete shm fail" << std::endl;exit(-1);}std::cout << "delete shm success" << std::endl;return 0;}
0 0
- System V 中内存共享的简单实例
- System v 共享内存
- system V 共享内存
- system v 共享内存
- System V共享内存
- System V 共享内存
- 共享内存System V
- System V共享内存
- system V 共享内存
- system v共享内存
- System V共享内存
- linux system V IPC 信号灯和共享内存实例
- linux进程间通信-----System V共享内存总结实例
- linux 进程间通信(system v 信号灯+system v 共享内存)实例
- linux 共享内存--System V共享内存
- 共享内存(system V IPC)
- System V IPC共享内存
- 共享内存(System V)
- .net 4.0新增性能----Task
- layout_graviry和gravity的区别及需要注意的问题
- 代码段,数据段,BSS段, 堆,栈, 参数
- Tree 递归
- Mac os x captain 10.11.1 安装boost库 及配置Xcode
- System V 中内存共享的简单实例
- poj 3321 Apple Tree
- Linux---有关dig命令的实用脚本
- 数据采集主要代码
- 中央剪切图片
- 彻底理解MapReduce shuffle过程原理
- PE导出表笔记
- java synchronized 关键字
- 偏差和方差的区别