博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
进程间通信(一)
阅读量:5855 次
发布时间:2019-06-19

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

1 消息队列

  消息队列是消息的链接表 , 存放在内核中并由消息队列标识符标识。

  m s g g e t用于创建一个新队列或打开一个现存的队列。

  m s g s n d用于将新消息添加到队列尾端。

  m s g r c v用于从队列中取消息。

  调用的第一个函数通常是m s g g e t,其功能是打开一个现存队列或创建一个新队列。

 

 

2信号

 

 

3共享存储

(1)int shmget(key_t key, int size, int shmflg),开辟或使用一块共享内存。

(2)void *shmat(int shmid, const void *shmaddr, int shmflg), 将参数shmid所指向的共享内存与当前进程连接。当使用某共享内存时,需要先使用shmat,达成连接。

(3)int shmdt(const void *shmaddr),将先前用shmat连接的共享内存与当前进程解除连接。参数shmaddr为shmat返回的共享内存的地址。在完成对共享内存的使用后,需要使用shmdt解除连接。

(4)int shmctl(int shmid, int cmd, struct shmid_ds *buf),控制内存的操作。当cmd为IPC_RMID时,删除shmid所指的共享内存。

 代码示例:

#include "ourhdr.h"#include 
#define ARRAY_SIZE 40000#define MALLOC_SIZE 100000#define SHM_SIZE 100000#define SHM_MODE 0600 /* user read/write */char array[ARRAY_SIZE]; /* uninitialized data = bss */intmain(void){ int shmid; char *ptr, *shmptr; printf("array[] from %lx to %lx\n", (unsigned long)&array[0], (unsigned long)&array[ARRAY_SIZE]); printf("stack around %lx\n", (unsigned long)&shmid); if ((ptr = malloc(MALLOC_SIZE)) == NULL) err_sys("malloc error"); printf("malloced from %lx to %lx\n", (unsigned long)ptr, (unsigned long)ptr+MALLOC_SIZE); if ((shmid = shmget(IPC_PRIVATE, SHM_SIZE, SHM_MODE)) < 0) err_sys("shmget error"); if ((shmptr = shmat(shmid, 0, 0)) == (void *)-1) err_sys("shmat error"); printf("shared memory attached from %lx to %lx\n", (unsigned long)shmptr, (unsigned long)shmptr+SHM_SIZE); if (shmctl(shmid, IPC_RMID, 0) < 0) err_sys("shmctl error"); exit(0);}

  

转载于:https://www.cnblogs.com/huanhuanang/p/4444311.html

你可能感兴趣的文章
像素与分辨率详解(转)
查看>>
发一个昨天晚上新鲜出炉的Javascript(js)分页程序,带详解,业余水平。。。。 不用任何jquery 之类的库...
查看>>
标准IO:常用函数集合
查看>>
正则表达式符号
查看>>
用户体验测试
查看>>
Linux下安装Perl
查看>>
win7下bugzilla配置
查看>>
实验四
查看>>
读《大学之路》有感①
查看>>
styled-components 全局样式定义,由injectGlobal改为createGlobalStyle
查看>>
Office Online Server 在线编辑Office文档,安装部署
查看>>
3N Numbers
查看>>
PYTHON 与 DJANGO 的时区问题
查看>>
IT人员必须掌握的10项软技能
查看>>
使用select遇到的坑
查看>>
织梦dedecms自定义搜索可以按照附加表字段进行搜索
查看>>
SPOJ DQUERY D-query (在线主席树/ 离线树状数组)
查看>>
python 3.6 setup
查看>>
VB6进行GZIP解压&C#进行GZIP压缩和解压
查看>>
第9章 泛型
查看>>