sharememory.c

//进程通信,共享存储区
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <errno.h>
#include <malloc.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/ioctl.h>
#include <stdarg.h>
#include <fcntl.h>
#include <fcntl.h>

#include<sys/types.h>
#include<sys/shm.h>
#include<sys/ipc.h>

#define SHMKEY 75
int shmid,i;
int *addr;

void client()
{
    int i;
    shmid=shmget(SHMKEY,1024,0777);
    addr=shmat(shmid,0,0);
    for(i=9;i>=0;i--)
    {
        while(*addr!=-1);
        printf("(client)sent\n");
        *addr=i;
    }
    exit(0);
}

void server()
{
    shmid=shmget(SHMKEY,1024,0777|IPC_CREAT);
    addr=shmat(shmid,0,0);
    do
    {
        *addr=-1;
        while(*addr==-1);
        printf("(server)received\n");
    }while(*addr);
    shmctl(shmid,IPC_RMID,0);
    exit(0);
}

main()
{
    while((i=fork())==-1);
    if(!i)server();
    system("ipcs -m");
    while((i=fork())==-1);
    if(!i)client();
    wait(0);
    wait(0);
}
时间: 2025-01-13 12:27:25

sharememory.c的相关文章

PHP进程及进程间通信

一.引言 进程是一个具有独立功能的程序关于某个数据集合的一次运行活动.换句话说就是,在系统调度多个cpu的时候,一个程序的基本单元.进程对于大多数的语言都不是一个陌生的概念,作为"世界上最好的语言PHP"当然也例外. 二.环境 php中的进程是以扩展的形式来完成.通过这些扩展,我们能够很轻松的完成进程的一系列动作. pcntl扩展:主要的进程扩展,完成进程创建于等待操作. posix扩展:完成posix兼容机通用api,如获取进程id,杀死进程等. sysvmsg扩展:实现system

2014年腾讯实习生笔试题解析

本答案是我自己搜索资料解答出来,假设不正确敬请指出 1. 使用深度优先算法遍历下图.遍历的顺序为(C) A ABCDEFG B ABDCFEG C ABDECFG D ABCDFEG 解析: 深度优先遍历相似于树的前序遍历,其基本思想为: (1).訪问顶点v; (2).从v的未被訪问的邻接点中选取一个顶点w,从w出发进行深度优先遍历. (3).反复以上两步: 选C 2. 输入序列ABCABC经过栈操作变成ABCCBA,以下哪些是可能的栈操作( AD) A. push pop push pop p

C# 进程间通信(共享内存)

原文:C# 进程间通信(共享内存) 进程间通信的方式有很多,常用的方式有: 1.共享内存(内存映射文件,共享内存DLL). 2.命名管道和匿名管道. 3.发送消息 本文是记录共享内存的方式进行进程间通信,首先要建立一个进程间共享的内存地址,创建好共享内存地址后,一个进程向地址中写入数据,另外的进程从地址中读取数据. 在数据的读写的过程中要进行进程间的同步. 进程间数据同步可以有以下的方式 1. 互斥量Mutex 2. 信号量Semaphore 3. 事件Event 本文中进程间的同步采用 信号量

C#进程间通讯技术-整理。

原文:C#进程间通讯技术-整理. 扩展阅读:http://www.cnblogs.com/joye-shen/archive/2012/06/16/2551864.html 一.进程间通讯的方式 1)共享内存 包括:内存映射文件,共享内存DLL,剪切板. 2)命名管道及匿名管道 3)消息通讯 4)利用代理方法.例如SOCKET,配置文件,注册表方式. 等方式. 方法一:通讯. 进程间通讯的方式有很多,常用的有共享内存(内存映射文件.共享内存DLL.剪切板等).命名管道和匿名管道.发送消息等几种方

系统性能产看杂记

sar -q当前系统负载情况saw -w 每秒钟创建进程平均个数和上下文切换平均次数runq-sz 队列运行长度1个cpu不能超过3plist-sz 进程数压力测试 ab -n 10000 -c 300 http://127.0.0.1/index.php dstat --top-cpu 查看那个进程最占cpudstat --top-mem --top-io netstat -c |grep http |grep ESTABLISHEDnetstat -pt |grep sshlsof -i |

〖Linux〗Linux高级编程 - 进程间通信(Interprocess Communication)

[转自: http://blog.csdn.net/Paradise_for_why/article/details/5550619] 这一章就是著名的IPC,这个东西实际的作用和它的名字一样普及.例如我们浏览网页,打印文章,等等. IPC总共有五种类型: 共享内存(Shared Memory):最容易理解的一种,就像一个特工把情报放在特定地点(内存),另一个特工再过来取走一样. 内存映射(Mapped Memory):和共享内存几乎相同,除了特工们把地点从内存改成了文件系统. 管道(Pipes

移动终端处理器构成和基带芯片概述

(一)移动终端发展 一部手机要实现最基本的功能-打电话发短信,这个手机就要包括以下几个部分:射频部分.基带部分.电源管理.外设.软件等.回顾一下移动手机的发展史: 1,功能手机(Feature Phone):只用基带芯片,只能用来打电话.发短信. 2,多媒体手机:使用基带芯片+协处理器加速单元.在功能机的基础上,增加了多媒体功能(如视频.音乐).MTK就是在多媒体手机时代崛起的,当然要归功于广大"山寨机".MTK基带芯片中除了CPU以外,还集成了很多外设控制器.Feature Phon

Linux互斥与同步应用(四):posix信号量的互斥与同步

[版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet 或 .../gentleliu,文章仅供学习交流,请勿用于商业用途] 在前面讲共享内存的IPC时曾说共享内存本身不具备同步机制,如果要实现同步需要使用信号量等手段来实现之,现在我们就来说说使用posix的信号量来实现posix多进程共享内存的同步.其实信号量也可以使用在同一进程的不同线程之间. 信号量是一个包含非负整数的变量,有两个原子操作,wait和post,也可以说是P操作和V操作,P操作将信号量减一,V操作

基带处理器和应用处理器的核间通信

当前的手机架构使用着多种处理器间通信方式,目前分离式AP.CP流行的接口有SPI.I2C.UART.USB和双端口互联等,SoC式则采用共享内存.控制命令以消息的格式在基带处理器和AP处理器间传送,完成通话.短消息.移动上网等功能,通信协议包括传统AT命令.MBIM等.一般来说,芯片都会支持多种接口,并设计通用的软件驱动平台驱动. 1,GPIO:通用输入输出控制线(General Purpose Input/Output) 当微控制器或芯片组没有足够的I/O端口,或当系统需要采用远端串行通信或控