博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux IPC - Shared memory
阅读量:5331 次
发布时间:2019-06-14

本文共 889 字,大约阅读时间需要 2 分钟。

1. Create shared memory

 
int shmget(key_t key, int size, int shmflg);
 
if ((shm_id = shmget (mykey, sizeof (struct sharedbuf), 0600 | IFLAGS)) < 0)
    perror ("shmget");
2. Attach shared memory
 
char *buf = shmat (shm_id, 0, 0);
 
3. Read / Write shared memory
 
sharedbuf->size = size_;
 
memcpy(sharedbuf->buf, mybuf, size_);
 
memcpy(mybuf, sharedbuf->buf, sharedbuf->size); 
 
3. Detach shared memory (optional)
 
shmdt (buf);
 
4. Remove shared memory
 
if (shmctl (shm_id, IPC_RMID, (struct shmid_ds *)0) < 0)
    perror ("shmctl");
 

shmctl

 
  shmctl 删除共享内存:
 
  int shmctl( int shmid , int cmd , struct shmid_ds *buf );
 
  int shmid:是共享内存的ID。
 
  int cmd: 是控制命令,可取值如下:
 
  IPC_STAT 得到共享内存的状态,
 
  IPC_SET 改变共享内存的状态
 
  IPC_RMID 删除共享内存
 
  struct shmid_ds *buf是一个结构体指针。IPC_STAT的时候,取得的状态放在这个结构体中。如果要改变共享内存的状态,用这个结构体指定。
 
  返回值: 成功:0失败:-1
 
  使用例子:
 
  shmctl(shmid,IPC_RMID,NULL);

转载于:https://www.cnblogs.com/wb118115/p/3324650.html

你可能感兴趣的文章
Ambiguous reference to member 'dataTask(with:completionHandle:)'错误
查看>>
同心砖雕广场
查看>>
[转] Oracle analyze 命令分析
查看>>
DB2建立不记录日志的表
查看>>
基础数据类型的补充.py
查看>>
ApiTestEngine框架
查看>>
架构模式
查看>>
编译型和解释型的区别&&Java从编译到执行的过程
查看>>
Java面向对象小结
查看>>
看开讲啦羽泉
查看>>
C# 删除字符串中的中文
查看>>
高精度算法_求组和
查看>>
spring boot
查看>>
当BPM业务流程管理遇上制造业
查看>>
C/C++ -- 插入排序算法
查看>>
asp.net一般处理程序对数据库的操作
查看>>
redis线程问题 相关配置
查看>>
69期-Java SE-012_多线程-1-001-002
查看>>
php身份验证系统
查看>>
LeetCode 172. 阶乘后的零
查看>>