linux共享内存
2015-06-12 16:40
447 查看
#include <stdio.h> #include <string.h> #include <semaphore.h> #include <sys/shm.h> #include <unistd.h> #include <fcntl.h> #define BUFFER_SIZE 4 int main() { int shmid = shmget((key_t)1234, sizeof(int) * BUFFER_SIZE, 0644 | IPC_CREAT); if ( -1 == shmid ) { printf("shmget failed!\n"); return 0; } void *shm = shmat(shmid, NULL, 0); if ((void *)-1 == shm) { printf("shmat failed!\n"); return 0; } int *sharedbuffer = (int *)shm; memset(sharedbuffer, -1, sizeof(int) * BUFFER_SIZE); int index = 0; while (index <= 20) { for (int i = 0; i < 4; i++) { if (-1 == sharedbuffer[i]) { sharedbuffer[i] = ++index; printf("product: %d\n", sharedbuffer[i]); break; } } } if (-1 == shmdt((void *)sharedbuffer)) { printf("shmdt failed!\n"); } }
#include <stdio.h> #include <string.h> #include <semaphore.h> #include <sys/shm.h> #include <unistd.h> #include <fcntl.h> #define BUFFER_SIZE 4 int main() { int shmid = shmget((key_t)1234, sizeof(int) * BUFFER_SIZE, 0644 | IPC_CREAT); if ( -1 == shmid ) { printf("shmget failed!\n"); return 0; } void *shm = shmat(shmid, NULL, 0); if ((void *)-1 == shm) { printf("shmat failed!\n"); return 0; } int *sharedbuffer = (int *)shm; int run = 1; while (run) { for (int i = 0; i < 4; i++) { if (-1 != sharedbuffer[i]) { printf("consumer: %d\n", sharedbuffer[i] ); if ( 20 == sharedbuffer[i] ) { run = 0; } sharedbuffer[i] = -1; break; } } } if (-1 == shmdt((void *)sharedbuffer)) { printf("shmdt failed!\n"); } }
相关文章推荐
- Linux进程状态
- CentOS 5.5下安装MySQL 5.5全过程分享
- linux下安装JDK
- Linux笔记
- centos 谷歌浏览器安装
- linux下分析Java程序内存汇总
- linux驱动中的链表操作
- centos 系统安装mp4box
- linux系统添加和删除IP,批量添加IP
- Linux操作系统原理及应用
- linux信号列表
- 在Linux系统中使用lsblk和blkid显示设备信息的方法
- 5、linux下LCD驱动
- CentOS 6.5添加/绑定IP
- linux svn环境搭建
- 我的Linux随笔目录
- Linux下查看和清空route cache
- linux命令6--cp命令
- linux黑屏报错,根目录属性只读问题处理
- 学习linux